Commit 0a210e4d authored by 罗超's avatar 罗超

1

parent 918c2e7a
......@@ -27,4 +27,48 @@ export function getStuList(data) {
method: 'post',
data
})
}
//学管 获取预警枚举
export function getEarlyWarningEnum(data) {
return request({
url: '/Stu/GetGuestClassHoursEarlyWarningEnumList',
method: 'post',
data
})
}
//学管 获取类型枚举
export function getTypeEnum(data) {
return request({
url: '/Stu/GetOrderJoinTypeEnumEnumList',
method: 'post',
data
})
}
//学管 添加事件
export function addEvent(data) {
return request({
url: '/Stu/GetSetStudentEventLog',
method: 'post',
data
})
}
//学管 获取可补课课时,缺勤次数,请假次数分页信息
export function getClassCheckPageList(data) {
return request({
url: '/Stu/GetClassCheckPageList',
method: 'post',
data
})
}
//学管 获取事件记录分页信息
export function getEventLogPageList(data) {
return request({
url: '/Stu/GetStudentEventLogPageList',
method: 'post',
data
})
}
\ No newline at end of file
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:900px;">
<q-card-section>
<div class="text-h6" v-if="this.msg.Id===0">添加事件</div>
<div class="text-h6" v-if="this.msg.Id>0">修改事件</div>
</q-card-section>
<q-card-section class="q-pt-none">
<div class="row ">
<div class="col-6 q-pr-lg">
<q-input filled v-model="msg.Title" label="标题" />
</div>
<div class="col-6">
<q-select @input="" standout="bg-primary text-white" v-model="msg.EventType" class="col-6"
option-label="Name" option-value="Id" :options="typeOpts" emit-value map-options label="类型" />
</div>
</div>
<q-input filled type="textarea" :rows="3" style="margin-top:20px;" stack-label maxlength="2000"
v-model="msg.EventContent" :dense="false" class="col-12 q-pb-lg" label="内容" />
<div class="row wrap" style="padding-top:20px">
<div style="display:flex;flex-wrap: wrap;">
<div v-if="msg.EventPicList&&msg.EventPicList.length>0" v-for="(item,index) in msg.EventPicList">
<div class="ItemImgDiv">
<q-img :src="item" spinner-color="white" style="height: 100%;height:100%" />
<q-btn size="7px" @click="deleteItemImg(index)" style="position:absolute;right:-5px;top:-5px;" round
color="red" icon="iconfont icon-guanbi1" />
</div>
</div>
<el-upload class="avatar-uploader addDutyMain" action="" :before-upload="uploadFile"
:show-file-list="false">
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</div>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="save" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
UploadSelfFile,
} from '../../api/common/common'
import {
addEvent
} from '../../api/stuMan/index.js'
export default {
props: {
setObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
saveLoading: false,
msg: {
Id: 0,
StuId: 0,
School_Id: 0,
EventType: 2,
EventContent: "",
Title: "",
EventPicList: []
},
typeOpts: [{
Name: "处分",
Id: 1,
},
{
Name: "奖励",
Id: 2,
},
]
}
},
mounted() {
console.log(85, this.setObj)
if (this.setObj) {
if (this.setObj.Student_Id) {
this.msg.StuId = this.setObj.Student_Id
}
if (this.setObj.School_Id) {
this.msg.School_Id = this.setObj.School_Id
}
if (this.setObj.Id>0) {
this.msg.Id = this.setObj.Id
if (this.setObj.EventType) {
this.msg.EventType = this.setObj.EventType
}
if (this.setObj.Title) {
this.msg.Title = this.setObj.Title
}
if (this.setObj.EventContent) {
this.msg.EventContent = this.setObj.EventContent
}
if (this.setObj.EventPicList) {
this.msg.EventPicList = this.setObj.EventPicList
}
}else{
this.msg.Id =0
this.msg.EventType = 2
this.msg.Title = ""
this.msg.EventContent = ""
this.msg.EventPicList =[]
}
}else{
this.msg.Id =0
this.msg.EventType = 2
this.msg.Title = ""
this.msg.EventContent = ""
this.msg.EventPicList =[]
}
console.log(109, this.msg)
this.$forceUpdate();
},
methods: {
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
save() {
console.log(89, this.msg)
this.saveLoading = true
addEvent(this.msg).then(res => {
this.saveLoading = false
if (res.Code === 1) {
this.$message.success("操作成功")
this.$emit("success")
this.persistent = false
} else {
this.$message.error(res.Message)
}
}).catch(err => {
this.saveLoading = false
})
},
uploadFile(files) {
UploadSelfFile('studentIcon', files, res => {
if (res.Code == 1) {
this.msg.EventPicList.push(res.FileUrl);
}
})
},
//删除图片
deleteItemImg(index) {
this.msg.EventPicList.splice(index, 1);
}
},
}
</script>
<style>
.avatar-uploader .el-upload {
border-radius: 6px;
cursor: pointer;
width: 100%;
height: 100%;
color: #8c939d;
position: relative;
overflow: hidden;
}
.addDutyMain {
display: inline-block;
width: 118px;
height: 118px;
font-size: 70px;
border: 1px dashed #d9d9d9;
line-height: 120px;
}
.ItemImgDiv {
width: 118px;
height: 118px;
position: relative;
margin: 0 10px 10px 0;
display: inline-block;
}
._delete_img {
position: absolute;
top: 0px;
height: 82px;
width: 143px;
line-height: 34px;
text-align: center;
background-color: rgba(2, 2, 2, 0.6);
display: inherit;
opacity: 0;
transition: all linear .5s
}
._delete_img i.iconfont {
display: inline-block;
width: 32px;
height: 32px;
border-radius: 50%;
color: #E95252 !important;
background-color: rgba(251, 251, 251, 0.9);
margin-top: 26px;
}
._upload_box ul li {
float: left;
height: 82px;
width: 143px;
padding: 0px 20px 20px 0;
text-align: center;
position: relative;
cursor: pointer;
margin-right: 10px;
}
._upload_box ul li img {
height: 82px;
width: 143px;
}
._upload_box ul li:hover ._delete_img {
opacity: 1;
}
._upload_tips {
font-size: 12px;
position: absolute;
top: 71%;
width: 100%;
left: 0;
text-align: center;
color: #949494;
}
</style>
<template>
<!-- 可补课时 -->
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 900px;max-width:900px;">
<q-card-section>
<div class="text-h6">事件记录</div>
</q-card-section>
<q-card-section class="q-pt-none">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table "
separator="none" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props">
<!-- <div class="col-2 q-table__title">可补课课时</div> -->
</template>
<template v-slot:body-cell-EventType="props">
<q-td :props="props">
<div v-if="props.row.EventType===1" style="color:#ff0000">处分</div>
<div v-if="props.row.EventType===2" style="color:#00ff00">奖励</div>
</q-td>
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<div>
<q-btn size="xs" color="accent" style="font-weight:400" label="修改"
@click="modify(props.row)" />
</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>
</q-table>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<!-- <q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="save" /> -->
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
getEventLogPageList
} from '../../api/stuMan/index.js'
export default {
props: {
setObj: {
type: Object,
}
},
data() {
return {
persistent: true,
loading: false,
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
StuId:0,
EventType:0
},
data: [],
columns: [
{
name: "Title",
label: "标题",
align: "left",
field: "Title",
},
{
name: "EventType",
label: "类型",
align: "left",
field: "EventType"
},
{
name: "EventContent",
label: "内容",
align: "left",
field: "EventContent",
required: true,
},
{
name: "CreateByName",
label: "创建人",
align: "left",
field: "CreateByName",
},
{
name: "CreateTime",
label: "创建时间",
align: "left",
field: "CreateTime",
},
{
name: "optioned",
label: "操作",
align: "left",
},
]
}
},
mounted() {
if (this.setObj) {
this.msg.StuId = this.setObj.Student_Id
}
this.getList();
},
methods: {
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
getList() {
getEventLogPageList(this.msg).then(res => {
if (res.Code === 1) {
this.data = res.Data.PageData
this.pageCount = res.Data.PageCount
}
})
},
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
//修改
modify(item){
this.persistent = false
this.$emit('modify',item)
}
},
}
</script>
<style>
.avatar-uploader .el-upload {
border-radius: 6px;
cursor: pointer;
width: 100%;
height: 100%;
color: #8c939d;
position: relative;
overflow: hidden;
}
.addDutyMain {
display: inline-block;
width: 118px;
height: 118px;
font-size: 70px;
border: 1px dashed #d9d9d9;
line-height: 120px;
}
.ItemImgDiv {
width: 118px;
height: 118px;
position: relative;
margin: 0 10px 10px 0;
display: inline-block;
}
._delete_img {
position: absolute;
top: 0px;
height: 82px;
width: 143px;
line-height: 34px;
text-align: center;
background-color: rgba(2, 2, 2, 0.6);
display: inherit;
opacity: 0;
transition: all linear .5s
}
._delete_img i.iconfont {
display: inline-block;
width: 32px;
height: 32px;
border-radius: 50%;
color: #E95252 !important;
background-color: rgba(251, 251, 251, 0.9);
margin-top: 26px;
}
._upload_box ul li {
float: left;
height: 82px;
width: 143px;
padding: 0px 20px 20px 0;
text-align: center;
position: relative;
cursor: pointer;
margin-right: 10px;
}
._upload_box ul li img {
height: 82px;
width: 143px;
}
._upload_box ul li:hover ._delete_img {
opacity: 1;
}
._upload_tips {
font-size: 12px;
position: absolute;
top: 71%;
width: 100%;
left: 0;
text-align: center;
color: #949494;
}
</style>
<template>
<!-- 可补课时 -->
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 900px;max-width:900px;">
<q-card-section>
<div class="text-h6" v-if="type==1">可补课课时</div>
<div class="text-h6" v-if="type==2">缺勤次数</div>
<div class="text-h6" v-if="type==3">请假</div>
</q-card-section>
<q-card-section class="q-pt-none">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table "
separator="none" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props">
<!-- <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)">
{{props.row.ContractNo}}
</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>
</q-table>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<!-- <q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="save" /> -->
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
getClassCheckPageList
} from '../../api/stuMan/index.js'
export default {
props: {
type: {
type: Number,
default: 1
},
setObj: {
type: Object,
}
},
data() {
return {
persistent: true,
loading: false,
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
OrderGuestId: 0,
CheckStatus: 1,
MakeUpStatus: 2,
},
data: [],
columns: [
{
name: "GuestName",
label: "学生名称",
align: "left",
field: "GuestName",
},
{
name: "ClassName",
label: "班级名称",
align: "left",
field: "ClassName",
required: true,
},
{
name: "ClassNo",
label: "班号",
align: "left",
field: "ClassNo"
},
{
name: "CourseName",
label: "课程",
align: "left",
field: "CourseName",
},
{
name: "RoomName",
label: "教室",
align: "left",
field: "RoomName",
},
{
name: "TeacherName",
label: "教师",
align: "left",
field: "TeacherName",
},
{
name: "ClassDate",
label: "上课时间",
align: "left",
field: "ClassDate",
},
{
name: "TimeBucket",
label: "上课时间段",
align: "left",
field: "TimeBucket",
},
{
name: "CreateTime",
label: "签到时间",
align: "left",
field: "CreateTime",
},
]
}
},
mounted() {
if (this.setObj) {
this.msg.OrderGuestId = this.setObj.Student_Id
}
if (this.type === 1) {
//可补课时
this.msg.CheckStatus = 1
this.msg.MakeUpStatus = 2
} else if (this.type === 2) {
// 缺勤
this.msg.CheckStatus = 1
delete this.msg.MakeUpStatus
} else if (this.type === 3) {
// 请假
this.msg.CheckStatus = 2
delete this.msg.MakeUpStatus
}
this.getList();
},
methods: {
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
getList() {
getClassCheckPageList(this.msg).then(res => {
console.log(83, res)
if (res.Code === 1) {
this.data = res.Data.PageData
this.pageCount = res.Data.PageCount
}
})
},
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
},
}
</script>
<style>
.avatar-uploader .el-upload {
border-radius: 6px;
cursor: pointer;
width: 100%;
height: 100%;
color: #8c939d;
position: relative;
overflow: hidden;
}
.addDutyMain {
display: inline-block;
width: 118px;
height: 118px;
font-size: 70px;
border: 1px dashed #d9d9d9;
line-height: 120px;
}
.ItemImgDiv {
width: 118px;
height: 118px;
position: relative;
margin: 0 10px 10px 0;
display: inline-block;
}
._delete_img {
position: absolute;
top: 0px;
height: 82px;
width: 143px;
line-height: 34px;
text-align: center;
background-color: rgba(2, 2, 2, 0.6);
display: inherit;
opacity: 0;
transition: all linear .5s
}
._delete_img i.iconfont {
display: inline-block;
width: 32px;
height: 32px;
border-radius: 50%;
color: #E95252 !important;
background-color: rgba(251, 251, 251, 0.9);
margin-top: 26px;
}
._upload_box ul li {
float: left;
height: 82px;
width: 143px;
padding: 0px 20px 20px 0;
text-align: center;
position: relative;
cursor: pointer;
margin-right: 10px;
}
._upload_box ul li img {
height: 82px;
width: 143px;
}
._upload_box ul li:hover ._delete_img {
opacity: 1;
}
._upload_tips {
font-size: 12px;
position: absolute;
top: 71%;
width: 100%;
left: 0;
text-align: center;
color: #949494;
}
</style>
......@@ -18,16 +18,16 @@
<div class="text-h6">高级查询</div>
</q-card-section>
<div class="row q-mb-md">
<q-input clearable standout="bg-primary text-white" class="col-12" v-model="msg.classId" label="班号"
<q-input clearable standout="bg-primary text-white" class="col-12" v-model="msg.ClassNo" label="班号"
maxlength="20" />
</div>
<div class="row q-mb-md">
<q-input clearable standout="bg-primary text-white" class="col-12" v-model="msg.orderId" label="订单号"
<q-input clearable standout="bg-primary text-white" class="col-12" v-model="msg.OrderId" label="订单号"
maxlength="20" />
</div>
<div class="row q-mb-md">
<q-select standout="bg-primary text-white" class="col-12" option-label="EmployeeName" option-value="Id"
v-model="msg.employee" :options="EmployeeList" emit-value use-input map-options label="业务员" clearable
v-model="msg.EnterID" :options="EmployeeList" emit-value use-input map-options label="业务员" clearable
@filter="filterEmployee">
<template v-slot:no-option>
<q-item>
......@@ -41,26 +41,27 @@
<div class="Sysuser_Date row q-mb-md">
<q-field filled class="col-12">
 <template v-slot:control>
<el-date-picker v-model="msg.SelectStartTimeStr" type="date" placeholder="下单时间" value-format="yyyy-MM-dd"
@change="">
</el-date-picker>    
<el-date-picker v-model="dateList" value-format="yyyy-MM-dd" type="daterange" style="border:none;"
 range-separator="至"  start-placeholder="开始日期"  end-placeholder="结束日期">
 </el-date-picker>      
</template>
</q-field>
</div>
<div class="row q-mb-md">
<q-select standout="bg-primary text-white" v-model="msg.status" class="col-12" :options="statusOpts" option-label="name" option-value="Id"
emit-value map-options label="状态" />
<q-select standout="bg-primary text-white" v-model="msg.EffectStatus" class="col-12" :options="statusOpts"
option-label="name" option-value="Id" emit-value map-options label="状态" />
</div>
<div class="row q-mb-md">
<q-select standout="bg-primary text-white" v-model="msg.type" class="col-12" :options="typeOpts" option-label="name" option-value="Id"
emit-value map-options label="类型" />
<q-select standout="bg-primary text-white" v-model="msg.JoinType" class="col-12" :options="typeEnum"
option-label="Name" option-value="Id" emit-value map-options label="类型" />
</div>
<div class="row q-mb-md">
<q-select standout="bg-primary text-white" v-model="msg.warn" class="col-12" :options="warnOpts" option-label="name" option-value="Id"
emit-value map-options label="预警" />
<q-select standout="bg-primary text-white" v-model="msg.EarlyWarning" class="col-12" :options="warnEnum"
option-label="Name" option-value="Id" emit-value map-options label="预警" />
</div>
<q-card-section>
<q-btn color="accent" label="查询" @click="query" style="float:right"></q-btn>
<q-btn text-color="accent q-mr-md" label="重置" @click="resetForm" style="float:right"></q-btn>
</q-card-section>
</q-card>
<div class="dialog-out-close" @click="closeEditOrder"
......@@ -73,135 +74,99 @@
import {
queryEmployee
} from '../../api/users/user'; //获取员工
import {
getClassDropDownList
} from '../../api/school/index'; //获取校区列表
export default {
name: "editOrder-form",
props: {
typeEnum: {
type: Array
},
warnEnum: {
type: Array
},
saveQuery: {
type: Object,
default: null
}
},
data() {
return {
showquery: true,
statusOpts:[
{
name:"未生效",
Id:1
},
{
name:"正常",
Id:2
},
{
name:"休学",
Id:3
},
{
name:"完课",
Id:4
},
],
typeOpts:[
{
name:"插班",
Id:1
},
{
name:"转班",
Id:2
},
{
name:"分拆",
Id:3
},
{
name:"正常",
Id:4
},
statusOpts: [{
name: "不限",
Id: ""
},
{
name: "未生效",
Id: 0
},
{
name: "正常",
Id: 1
},
{
name: "退学",
Id: 2
},
{
name: "申请中",
Id: 3
},
{
name: "驳回申请",
Id: 4
},
{
name: "停课",
Id: 5
},
{
name: "停课申请中",
Id: 6
},
{
name: "完结的订单",
Id: 7
},
{
name: "转班申请中",
Id: 8
},
],
warnOpts:[
{
name:"无",
Id:1
},
{
name:"不足5课时",
Id:2
},
{
name:"不足10课时",
Id:3
},
{
name:"不足15课时",
Id:4
},
{
name:"不足20课时",
Id:5
},
],
classList: [],
msg: {
classId:1,
orderId:"1",
employee:0,
status:1,
type:1,
date:"",
warn:1,
ClassNo: "",
OrderId: 0,
EnterID: 0,
EffectStatus: "",
JoinType: 0,
OrderTime: "",
EndOrderTime: "",
EarlyWarning: 0,
chooseNum: 0, //选中几项
},
EmployeeList: [], //员工列表
AllemployeeList: [], //所有员工列表
CourseList: [], //课程列表
courseObj: {}, //选择的课程
Teacher_Id: 0,
ClassName: ''
dateList: [],
}
},
mounted() {
if (this.saveQuery) {
this.msg.ClassNo = this.saveQuery.ClassNo
this.msg.OrderId = this.saveQuery.OrderId
this.msg.EnterID = this.saveQuery.EnterID
this.msg.EffectStatus = this.saveQuery.EffectStatus
this.msg.JoinType = this.saveQuery.JoinType
this.msg.EarlyWarning = this.saveQuery.EarlyWarning
this.msg.ClassNo = this.saveQuery.ClassNo
if(this.saveQuery.OrderTime){
this.dateList[0] = this.saveQuery.OrderTime
}
if(this.saveQuery.EndOrderTime){
this.dateList[1] = this.saveQuery.EndOrderTime
}
this.$forceUpdate()
}
this.getEmployee();
},
methods: {
//获取课程信息
getClassList(ClassId) {
this.OrderMsg.CourseId = '';
this.CourseList = [];
let val = this.classList.find(x => x.ClassId == ClassId);
if (val) {
this.Teacher_Id = val.Teacher_Id;
this.ClassName = val.ClassName;
}
var qMsg = {
ClassId: ClassId
};
queryChaClassInfo(qMsg).then(res => {
if (res.Code == 1) {
this.CourseList = res.Data.otherCourse;
}
});
},
//获取班级列表
getClass() {
getClassDropDownList({
IsAddDefault: 0,
IsQuerySurplus: 1
}).then(res => {
if (res.Code == 1) {
let tempArray = res.Data;
if (!tempArray) {
tempArray = [];
}
tempArray.unshift({
ClassId: 0,
ClassName: "不限"
})
this.classList = tempArray;
}
})
},
//筛选员工
filterEmployee(val, update) {
update(() => {
......@@ -234,12 +199,54 @@
this.showquery = false;
this.$emit('close')
},
resetForm() {
this.msg = {
ClassNo: "",
OrderId: 0,
EnterID: 0,
EffectStatus: "",
JoinType: 0,
OrderTime: "",
EndOrderTime: "",
EarlyWarning: 0,
chooseNum: 0, //选中几项
}
this.dateList = []
},
query() {
this.msg.chooseNum = 0
if (!this.dateList) {
this.dateList = []
}
if (this.dateList.length > 0) {
this.msg.chooseNum++
this.msg.OrderTime = this.dateList[0]
this.msg.EndOrderTime = this.dateList[1]
} else {
this.msg.OrderTime = ""
this.msg.EndOrderTime = ""
}
if (this.msg.ClassNo) {
this.msg.chooseNum++
}
if (this.msg.OrderId) {
this.msg.chooseNum++
}
if (this.msg.EnterID) {
this.msg.chooseNum++
}
if (this.msg.EffectStatus >= 0 && this.msg.EffectStatus !== "") {
this.msg.chooseNum++
}
if (this.msg.JoinType) {
this.msg.chooseNum++
}
if (this.msg.EarlyWarning) {
this.msg.chooseNum++
}
this.showquery = false;
this.$emit("success", this.msg)
}
}
}
</script>
</script>
\ No newline at end of file
......@@ -37,24 +37,31 @@
.column-cell-class-name-test-lan-s .v-table-body-cell {
background-color: #9cf;
}
.color-red{
color:red;
.color-red {
color: red;
}
.color-green{
color:green;
.color-green {
color: green;
}
.color-black{
color:black !important;
.color-black {
color: black !important;
}
.border-b{
.border-b {
border-bottom: 1px solid #999;
}
td .border-b:last-child{
border:none;
td .border-b:last-child {
border: none;
}
.orderCompleteStatistics td{
color:#000;
.orderCompleteStatistics td {
color: #000;
}
</style>
<template>
<div class="page_EasyReport My_table_tell page-body" v-loading="AALloading">
......@@ -82,7 +89,7 @@
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6">
<el-form-item label="班级名称:">
<div style="width:190px">
<el-input v-model="msg.ClassName" placeholder="请输入内容" filterable></el-input>
......@@ -94,13 +101,13 @@
<el-form-item label="课程名称:">
<div style="width:190px">
<el-input v-model="msg.CourseName" placeholder="请输入内容" filterable></el-input>
</div>
</div>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="业务员:">
<el-select v-model="msg.CreateBy" filterable >
<el-select v-model="msg.CreateBy" filterable>
<el-option label="不限" :value="0"></el-option>
<el-option v-for="item in EmployeeList" :label="item.EmployeeName" :key="item.Id" :value="item.Id">
{{item.EmployeeName}}</el-option>
......@@ -114,27 +121,27 @@
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="账户类型:">
<el-select filterable v-model='msg.AccountType'>
<el-option :value="0" label="不限"></el-option>
<el-option v-for='item in AccList' :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="账户类型:">
<el-select filterable v-model='msg.AccountType'>
<el-option :value="0" label="不限"></el-option>
<el-option v-for='item in AccList' :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="交易方式:">
<el-select v-model="msg.TradeWay" filterable @change="getAccountList(msg.AccountType,msg.TradeWay)">
<el-select v-model="msg.TradeWay" filterable @change="getAccountList(msg.AccountType,msg.TradeWay)">
<el-option label="不限" :value="0"></el-option>
<el-option v-for='item in BranchAccountList' :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
<el-option v-for='item in BranchAccountList' :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="账号:">
<el-select v-model="msg.AccountId" filterable >
<el-select v-model="msg.AccountId" filterable>
<el-option label="不限" :value="0"></el-option>
<el-option v-for='item in accountList' :label='item.Name' :value='item.ID' :key='item.ID'></el-option>
</el-select>
......@@ -142,34 +149,35 @@
</el-col>
<el-col :span="8">
<el-form-item label="下单时间:">
<el-date-picker class="h34" v-model="datevalue" type="daterange"
value-format="yyyy-MM-dd" range-separator="至"></el-date-picker>
<el-date-picker class="h34" v-model="datevalue" type="daterange" value-format="yyyy-MM-dd"
range-separator="至"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="消费课时:">
<el-date-picker class="h34" v-model="datevalue2" type="daterange"
value-format="yyyy-MM-dd" range-separator="至"></el-date-picker>
<el-date-picker class="h34" v-model="datevalue2" type="daterange" value-format="yyyy-MM-dd"
range-separator="至"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item >
<!-- <button class="normalBtn " @click="getData()">查询</button> -->
<q-btn color="primary" size="11px" label="查询" @click="handleCurrentChange(1)" style="marginRight:10px"/>
<!-- <button class="normalBtn " @click="exportExcel">导出EXCEL</button> -->
<q-btn color="primary" size="11px" label="导出EXCEL" @click="exportExcel"/>
<el-form-item>
<!-- <button class="normalBtn " @click="getData()">查询</button> -->
<q-btn color="primary" size="11px" label="查询" @click="handleCurrentChange(1)" style="marginRight:10px" />
<!-- <button class="normalBtn " @click="exportExcel">导出EXCEL</button> -->
<q-btn color="primary" size="11px" label="导出EXCEL" @click="exportExcel" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- <button class="normalBtn page_EasyReport_search" v-if="userId==1" @click="getData(1)">保存损失</button>
<p class="easyUpdateTime" v-if="UpdateStaus==1">正在更新,更新开始时间 {{UpdateStartTime}}</p>
<p class="easyUpdateTime" v-if="UpdateStaus==2">上次更新时间 {{UpdateStartTime}}<br />每日8点、12点、19点、22点数据更新~</p> -->
</div>
<div style="width:100%; overflow-x:auto">
<table :boeder="1" class="singeRowTable orderCompleteStatistics" style="width:3000px;border:1px solid #E6E6E6;" cellspacing="0" cellpadding="0">
<table :boeder="1" class="singeRowTable orderCompleteStatistics" style="width:3000px;border:1px solid #E6E6E6;"
cellspacing="0" cellpadding="0">
<tr>
<th colspan="15" style="border-right:1px solid #999;border-bottom:1px solid #999">合同信息</th>
<th colspan="6" style="border-right:1px solid #999;border-bottom:1px solid #999">收款信息</th>
......@@ -178,166 +186,203 @@
<th colspan="3" style="border-right:1px solid #999;border-bottom:1px solid #999">剩余情况</th>
<th rowspan="2" :width='120'>操作</th>
</tr>
<tr>
<!-- -合同信息-- -->
<th :width='120'>订单号</th>
<th :width='200'>签订时间</th>
<th :width='220'>合同编号</th>
<th :width='400'>产品名称</th>
<th :width='200'>班号</th>
<th :width='400'>班级</th>
<th :width='150'>学员名称</th>
<th :width='120'>业务员</th>
<th :width='120'>课时</th>
<th :width='120'>单价</th>
<th :width='120'>课程费</th>
<th :width='120'>教材费</th>
<th :width='120'>课件费</th>
<th :width='150'>优惠金额</th>
<th :width='180' style="border-right:1px solid #999">合同总金额</th>
<!-- -收款信息(实收金额-- -->
<th :width='150'>单据号</th>
<th :width='300'>收款日期</th>
<th :width='150'>收款金额</th>
<th :width='150'>收款方式</th>
<th :width='300'>收款账户</th>
<th :width='150' style="border-right:1px solid #999">应收金额</th>
<!-- --合同有效金额-- -->
<th :width='150'>有效课时</th>
<th :width='150' style="border-right:1px solid #999">有效金额</th>
<!-- -消耗情况-- -->
<th :width='200'>消耗教材费</th>
<th :width='200'>消耗课件费</th>
<th :width='150'>上课进度</th>
<th :width='150'>已上课时</th>
<th :width='200'>折后单价</th>
<th :width='200'>已上课金额</th>
<th :width='200' style="border-right:1px solid #999">退/付款金额</th>
<!-- -剩余情况-- -->
<th :width='200'>协调金额</th>
<th :width='120'>剩余课时</th>
<th :width='200' style="border-right:1px solid #999">剩余金额</th>
<!-- <th :width='120'>操作</th> -->
</tr>
<template v-for="(item,index) in DataList" v-loading="loading">
<tr>
<!-- -合同信息-- -->
<td @click="goUrl3('/sale/orderStatistics',item.OrderId)">
<template v-if="item.JoinType==3">
<el-tooltip class="item" effect="dark" content="续费订单" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:red" >
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.TargetJoinType==3">
<el-tooltip class="item" effect="dark" content="已续费" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:green" >
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.TargetJoinType==4">
<el-tooltip class="item" effect="dark" :content="`已转班【${item.TargetClassName}】,关联订单号${item.TargetOrderId}`" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:orange" >
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.TargetJoinType==1">
<th :width='120'>订单号</th>
<th :width='200'>签订时间</th>
<th :width='220'>合同编号</th>
<th :width='400'>产品名称</th>
<th :width='200'>班号</th>
<th :width='400'>班级</th>
<th :width='150'>学员名称</th>
<th :width='120'>业务员</th>
<th :width='120'>课时</th>
<th :width='120'>单价</th>
<th :width='120'>课程费</th>
<th :width='120'>教材费</th>
<th :width='120'>课件费</th>
<th :width='150'>优惠金额</th>
<th :width='180' style="border-right:1px solid #999">合同总金额</th>
<!-- -收款信息(实收金额-- -->
<th :width='150'>单据号</th>
<th :width='300'>收款日期</th>
<th :width='150'>收款金额</th>
<th :width='150'>收款方式</th>
<th :width='300'>收款账户</th>
<th :width='150' style="border-right:1px solid #999">应收金额</th>
<!-- --合同有效金额-- -->
<th :width='150'>有效课时</th>
<th :width='150' style="border-right:1px solid #999">有效金额</th>
<!-- -消耗情况-- -->
<th :width='200'>消耗教材费</th>
<th :width='200'>消耗课件费</th>
<th :width='150'>上课进度</th>
<th :width='150'>已上课时</th>
<th :width='200'>折后单价</th>
<th :width='200'>已上课金额</th>
<th :width='200' style="border-right:1px solid #999">退/付款金额</th>
<!-- -剩余情况-- -->
<th :width='200'>协调金额</th>
<th :width='120'>剩余课时</th>
<th :width='200' style="border-right:1px solid #999">剩余金额</th>
<!-- <th :width='120'>操作</th> -->
</tr>
<template v-for="(item,index) in DataList" v-loading="loading">
<tr>
<!-- -合同信息-- -->
<td @click="goUrl3('/sale/orderStatistics',item.OrderId)">
<template v-if="item.JoinType==3">
<el-tooltip class="item" effect="dark" :content="`原订单${item.SourceOrderId}`" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:blue" >
<el-tooltip class="item" effect="dark" content="续费订单" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:red">
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.TargetJoinType==3">
<el-tooltip class="item" effect="dark" content="已续费" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:green">
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.JoinType==4">
<el-tooltip class="item" effect="dark" :content="`从【${item.SourceClassName}】转入,关联订单号${item.SourceOrderId}`" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:blue" >
<template v-else-if="item.TargetJoinType==4">
<el-tooltip class="item" effect="dark"
:content="`已转班【${item.TargetClassName}】,关联订单号${item.TargetOrderId}`" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:orange">
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.TargetJoinType==1">
<template v-if="item.JoinType==3">
<el-tooltip class="item" effect="dark" :content="`原订单${item.SourceOrderId}`" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:blue">
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else-if="item.JoinType==4">
<el-tooltip class="item" effect="dark"
:content="`从【${item.SourceClassName}】转入,关联订单号${item.SourceOrderId}`" placement="top-start">
<span style="cursor: pointer;text-decoration: underline;color:blue">
{{item.OrderId}}
</span>
</el-tooltip>
</template>
<template v-else>
<span style="cursor: pointer;text-decoration: underline;">
{{item.OrderId}}
</span>
</template>
</template>
<template v-else>
<span style="cursor: pointer;text-decoration: underline;" >
<span style="cursor: pointer;text-decoration: underline;">
{{item.OrderId}}
</span>
</template>
</template>
<template v-else>
<span style="cursor: pointer;text-decoration: underline;" >
{{item.OrderId}}
</span>
</template>
</td>
<td>{{item.CreateTime}}</td>
<td @click="goUrl('/sale/contractManage',item.ContractNo)"><span style="cursor: pointer;text-decoration: underline;" >{{item.ContractNo}}</span></td>
<td @click="goUrl('/course/course',item.CourseName)"><span style="cursor: pointer;text-decoration: underline;" >{{item.CourseName}}</span></td>
<td >{{item.ClassNo}}</td>
<td @click="goUrl2('/course/classManage',item.ClassName)"><div style="cursor: pointer;text-decoration: underline;" >{{item.ClassName}}</div></td>
<td>{{item.StudentName}}</td>
<td>{{item.CreateByName}}</td>
<td>{{item.TotalClassHours}}</td>
<td>{{item.TotalUnitPrice}}</td>
<td>{{item.TotalCourseFee}}</td>
<td>{{item.TotalBookFee}}</td><!--教材费-->
<td>{{item.TotalClassFee}}</td><!--课件费-->
<td>{{item.TotalDiscountMoney}}</td><!--优惠金额-------------------------->
<td>{{item.TotalMoney}}</td><!--合同总金额-->
<!-- -收款信息(实收金额-- -->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
{{ subitem.FrID }}
</div>
</td><!--单据号-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
{{ subitem.TradeDate }}
</div>
</td><!--收款日期-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
{{ subitem.Money }}
</div>
</td><!--收款金额-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
<div v-for="_subitem in subitem.TradeWayList">
{{ _subitem.TypeName }}
</div>
</div>
</td><!--收款方式-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
<div v-for="_subitem in subitem.TradeWayList" >
{{ _subitem.Alias||'/' }}
</div>
</div>
</td><!--收款账户-->
<!-- ---- -->
<td>{{item.PreferPrice}}</td><!--应收金额-->
<!-- -合同有效金额--- -->
<td>{{item.EffectiveClassHours}}</td><!--有效课时-->
<td>{{item.Income}}</td><!--有效金额-->
<!-- 消耗情况 -->
<td>{{item.UseBookFee}}</td><!--教材费-->
<td>{{item.UseCoursewareFee}}</td><!--课件费-->
<td>{{item.Progress}}</td><!--上课进度-->
<td>{{item.UseClassHours}}</td><!--已上课时-->
<td>{{item.Unit_Price}}</td><!--单价-->
<td>{{item.UseCourseFee}}</td><!--已上课金额-->
<td>{{item.Expend}}</td><!--退/付款金额-->
<!-- -剩余情况-- -->
<td>{{item.AdjustPrice}}</td><!--协调金额-->
<td>{{item.SurplusCourseHours}}</td><!--剩余课时-->
<td :class="{'color-red':item.SurplusMoney<0,'color-green':item.SurplusMoney>0&&item.SurplusMoney<500,'color-black':item.SurplusMoney==0||item.SurplusMoney>=500}">{{item.SurplusMoney}}</td><!--剩余金额-->
<td><q-btn color="primary" style="width:80px;font-size:10px" label="协调金额" @click="show($event),AdjustPriceMsg.ContractId=item.Id,AdjustPriceMsg.AdjustPrice=item.AdjustPrice"/></td><!--操作-->
</tr>
</template>
</table>
<div class="noDataNotice" v-if="DataList.length<1"><i class="iconfont icon-kong"></i> <p>暂无数据</p></div>
</td>
<td>{{item.CreateTime}}</td>
<td @click="goUrl('/sale/contractManage',item.ContractNo)"><span
style="cursor: pointer;text-decoration: underline;">{{item.ContractNo}}</span></td>
<td @click="goUrl('/course/course',item.CourseName)"><span
style="cursor: pointer;text-decoration: underline;">{{item.CourseName}}</span></td>
<td>{{item.ClassNo}}</td>
<td @click="goUrl2('/course/classManage',item.ClassName)">
<div style="cursor: pointer;text-decoration: underline;">{{item.ClassName}}</div>
</td>
<td>{{item.StudentName}}</td>
<td>{{item.CreateByName}}</td>
<td>{{item.TotalClassHours}}</td>
<td>{{item.TotalUnitPrice}}</td>
<td>{{item.TotalCourseFee}}</td>
<td>{{item.TotalBookFee}}</td>
<!--教材费-->
<td>{{item.TotalClassFee}}</td>
<!--课件费-->
<td>{{item.TotalDiscountMoney}}</td>
<!--优惠金额-------------------------->
<td>{{item.TotalMoney}}</td>
<!--合同总金额-->
<!-- -收款信息(实收金额-- -->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
{{ subitem.FrID }}
</div>
</td>
<!--单据号-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
{{ subitem.TradeDate }}
</div>
</td>
<!--收款日期-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
{{ subitem.Money }}
</div>
</td>
<!--收款金额-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
<div v-for="_subitem in subitem.TradeWayList">
{{ _subitem.TypeName }}
</div>
</div>
</td>
<!--收款方式-->
<td>
<div v-for="subitem in item.IncomeList" class="border-b">
<div v-for="_subitem in subitem.TradeWayList">
{{ _subitem.Alias||'/' }}
</div>
</div>
</td>
<!--收款账户-->
<!-- ---- -->
<td>{{item.PreferPrice}}</td>
<!--应收金额-->
<!-- -合同有效金额--- -->
<td>{{item.EffectiveClassHours}}</td>
<!--有效课时-->
<td>{{item.Income}}</td>
<!--有效金额-->
<!-- 消耗情况 -->
<td>{{item.UseBookFee}}</td>
<!--教材费-->
<td>{{item.UseCoursewareFee}}</td>
<!--课件费-->
<td>{{item.Progress}}</td>
<!--上课进度-->
<td>{{item.UseClassHours}}</td>
<!--已上课时-->
<td>{{item.Unit_Price}}</td>
<!--单价-->
<td>{{item.UseCourseFee}}</td>
<!--已上课金额-->
<td>{{item.Expend}}</td>
<!--退/付款金额-->
<!-- -剩余情况-- -->
<td>{{item.AdjustPrice}}</td>
<!--协调金额-->
<td>{{item.SurplusCourseHours}}</td>
<!--剩余课时-->
<td
:class="{'color-red':item.SurplusMoney<0,'color-green':item.SurplusMoney>0&&item.SurplusMoney<500,'color-black':item.SurplusMoney==0||item.SurplusMoney>=500}">
{{item.SurplusMoney}}</td>
<!--剩余金额-->
<td>
<q-btn color="primary" style="width:80px;font-size:10px" label="协调金额" v-if="from==1"
@click="show($event),AdjustPriceMsg.ContractId=item.Id,AdjustPriceMsg.AdjustPrice=item.AdjustPrice" />
<q-btn color="primary" style="width:80px;font-size:10px" label="查看明细" v-if="from==2" @click="seeClassUseDetail(item)" />
</td>
<!--操作-->
</tr>
</template>
</table>
<div class="noDataNotice" v-if="DataList.length<1"><i class="iconfont icon-kong"></i>
<p>暂无数据</p>
</div>
</div>
<!-- 对话框 -->
<template>
......@@ -348,33 +393,21 @@
<div class="text-h6" style="textAlign:center">设置协调金额</div>
</q-card-section>
<q-form @submit="onSubmit" class="q-gutter-md">
<q-input
filled
ref="money"
v-model="AdjustPriceMsg.AdjustPrice"
label="协调金额"
lazy-rules
step="0.000001"
type="number"
/>
<q-input filled ref="money" v-model="AdjustPriceMsg.AdjustPrice" label="协调金额" lazy-rules step="0.000001"
type="number" />
<div style="display:flex; justify-content:flex-end">
<q-btn label="确认" type="Submit" color="primary" style="margin-right:10px"/>
<q-btn label="取消" text-color="primary" @click="hide"/>
<q-btn label="确认" type="Submit" color="primary" style="margin-right:10px" />
<q-btn label="取消" text-color="primary" @click="hide" />
</div>
</q-form>
</div>
</q-card>
</q-dialog>
</template>
<div v-if="DataList.length>0">
<el-pagination
background
@current-change="handleCurrentChange"
:current-page.sync="msg.pageIndex"
layout="total,prev, pager, next, jumper"
:page-size='msg.pageSize'
:total='total'>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="msg.pageIndex"
layout="total,prev, pager, next, jumper" :page-size='msg.pageSize' :total='total'>
</el-pagination>
</div>
</div>
......@@ -383,10 +416,15 @@
import {
getSchoolDropdown, //获取校区列表
} from '../../api/school/index';
import { queryEmployee } from '../../api/users/user';//获取业务员
import {getOrderCompleteStatisticsPageList,setContractAdjustPrice} from "../../api/report/index"
import {
queryEmployee
} from '../../api/users/user'; //获取业务员
import {
getOrderCompleteStatisticsPageList,
setContractAdjustPrice
} from "../../api/report/index"
import Vue from "vue";
import {
getEasyReportList,
outToExcelEasyReportList
......@@ -397,27 +435,27 @@
export default {
data() {
return {
total:0,
total: 0,
msg: {
pageIndex:1,
pageSize:10,
OrderId:0,// 订单编号
ContractNo:"",//合同编号
StudentName:"",//学生姓名
ClassName:"",//班级名称
CourseName:"",//课程名称
CreateBy:0,//业务员
FinanceId:0,//财务单据id
TradeWay:0,//交易方式
AccountId:0,//账号id
AccountType:0,//账户类型
StartTime:'',//下单时间
EndTime:'',
XFStartTime:'',//消费课时时间
XFEndTime:'',
pageIndex: 1,
pageSize: 10,
OrderId: 0, // 订单编号
ContractNo: "", //合同编号
StudentName: "", //学生姓名
ClassName: "", //班级名称
CourseName: "", //课程名称
CreateBy: 0, //业务员
FinanceId: 0, //财务单据id
TradeWay: 0, //交易方式
AccountId: 0, //账号id
AccountType: 0, //账户类型
StartTime: '', //下单时间
EndTime: '',
XFStartTime: '', //消费课时时间
XFEndTime: '',
},
datevalue:[],
datevalue2:[],
datevalue: [],
datevalue2: [],
data: [],
DataList: [],
UpdateStaus: 0,
......@@ -428,23 +466,28 @@
loading: false,
AALloading: false,
userId: -2,
EmployeeList:[],//业务员列表
AccList:[],//账户类型列表
BranchAccountList:[],//交易方式列表
accountList:[],//账号id列表
AdjustPriceMsg:{
ContractId:"",//合同id
AdjustPrice:"",//协调金额
}
EmployeeList: [], //业务员列表
AccList: [], //账户类型列表
BranchAccountList: [], //交易方式列表
accountList: [], //账号id列表
AdjustPriceMsg: {
ContractId: "", //合同id
AdjustPrice: "", //协调金额
},
from: 1, //来源页
}
},
created() {
let userInfo = this.getLocalStorage();
this.userId = userInfo.EmployeeId;
},
mounted() {
if (this.$route.query.from) {
this.from = this.$route.query.from
this.$forceUpdate();
}
this.getData();
this.getCompanyList();
this.getEmployee(0);
......@@ -452,38 +495,36 @@
this.Financial_post_GetBranchAccountList();
},
methods: {
handleCurrentChange: function (val) { //翻页
handleCurrentChange: function (val) { //翻页
this.msg.pageIndex = val;
this.getData();
},
exportExcel: function () {
EduDownLoad("/finance/OutToExcelOrderStudentClassHoursList", this.msg, "订单完成统计.xls")
},
getData(){
if (this.datevalue && this.datevalue.length > 0) {
this.msg.StartTime = this.datevalue[0];
this.msg.EndTime = this.datevalue[1];
}else{
this.msg.StartTime = '';
this.msg.EndTime = '';
}
if (this.datevalue2 && this.datevalue2.length > 0) {
this.msg.XFStartTime = this.datevalue2[0];
this.msg.XFEndTime = this.datevalue2[1];
}else{
this.msg.XFStartTime = '';
this.msg.XFEndTime = '';
}
getOrderCompleteStatisticsPageList(this.msg).then((res)=>{
res.Data.PageData.map((item)=>{
item.Progress=item.Progress+"%"
})
this.DataList=res.Data.PageData
this.total=res.Data.Count
getData() {
if (this.datevalue && this.datevalue.length > 0) {
this.msg.StartTime = this.datevalue[0];
this.msg.EndTime = this.datevalue[1];
} else {
this.msg.StartTime = '';
this.msg.EndTime = '';
}
if (this.datevalue2 && this.datevalue2.length > 0) {
this.msg.XFStartTime = this.datevalue2[0];
this.msg.XFEndTime = this.datevalue2[1];
} else {
this.msg.XFStartTime = '';
this.msg.XFEndTime = '';
}
getOrderCompleteStatisticsPageList(this.msg).then((res) => {
res.Data.PageData.map((item) => {
item.Progress = item.Progress + "%"
})
this.DataList = res.Data.PageData
this.total = res.Data.Count
})
},
getCompanyList() {
let userInfo = this.getLocalStorage();
......@@ -501,13 +542,13 @@
})
},
//获取业务员
getEmployee(id) {
getEmployee(id) {
var qMsg = {
Dept_Id: 0
}
qMsg.Dept_Id=id;
qMsg.Dept_Id = id;
queryEmployee(qMsg).then(res => {
if(res.Code==1){
if (res.Code == 1) {
this.EmployeeList = res.Data;
}
}).catch(() => {
......@@ -515,7 +556,7 @@
})
},
//获取账户类型下拉
AccountType_post_GetList() {
AccountType_post_GetList() {
this.apipost('AccountType_post_GetList', this.queryAccMsg, res => {
if (res.data.resultCode == 1) {
this.AccList = res.data.data;
......@@ -525,7 +566,7 @@
}, err => {})
},
//获取交易方式列表
Financial_post_GetBranchAccountList() {
Financial_post_GetBranchAccountList() {
this.apipost('Financial_post_GetBranchAccountList', {}, res => {
if (res.data.resultCode == 1) {
this.BranchAccountList = res.data.data;
......@@ -533,7 +574,7 @@
}, err => {})
},
//账户id
getAccountList(i, t) {
getAccountList(i, t) {
let accountList = [];
if (t == 1) { // 银行
this.apipost('bankaccount_post_GetList', {
......@@ -619,15 +660,18 @@
}
},
bodyCellSpan({ row, column, rowIndex }) {
bodyCellSpan({
row,
column,
rowIndex
}) {
if (rowIndex === 1) {
if (column.field === "date") {
return {
rowspan: 1,
colspan: 2,
};
}
else if (column.field === "hobby") {
} else if (column.field === "hobby") {
return {
rowspan: 0,
colspan: 0,
......@@ -636,70 +680,78 @@
}
},
//对话框
show() {
this.$refs.dialog.show();
},
show() {
this.$refs.dialog.show();
},
hide() {
this.$refs.dialog.hide();
},
hide() {
this.$refs.dialog.hide();
},
onDialogHide() {
// QDialog发出“hide”事件时
// 需要发出
this.$emit("hide");
},
onDialogHide() {
// QDialog发出“hide”事件时
// 需要发出
this.$emit("hide");
},
onCancelClick() {
// 我们只需要隐藏对话框
this.hide();
},
onSubmit() {
this.$refs.money.validate();
if (this.$refs.money.hasError) {
this.formHasError = true;
} else {
this.AdjustPriceMsg.ContractId=this.AdjustPriceMsg.ContractId.toString();
this.AdjustPriceMsg.AdjustPrice=this.AdjustPriceMsg.AdjustPrice.toString();
if(this.AdjustPriceMsg.AdjustPrice==''){
this.AdjustPriceMsg.AdjustPrice=0;
}
onCancelClick() {
// 我们只需要隐藏对话框
this.hide();
},
onSubmit() {
this.$refs.money.validate();
if (this.$refs.money.hasError) {
this.formHasError = true;
} else {
this.AdjustPriceMsg.ContractId = this.AdjustPriceMsg.ContractId.toString();
this.AdjustPriceMsg.AdjustPrice = this.AdjustPriceMsg.AdjustPrice.toString();
if (this.AdjustPriceMsg.AdjustPrice == '') {
this.AdjustPriceMsg.AdjustPrice = 0;
}
setContractAdjustPrice(this.AdjustPriceMsg).then((res) => {
this.$q.notify({
type: "positive",
icon: "done",
position: "top",
color: "positive",
message: res.Message,
});
if (res.Code === 1) {
this.getData()
}
this.$refs.dialog.hide();
})
setContractAdjustPrice(this.AdjustPriceMsg).then((res)=>{
this.$q.notify({
type: "positive",
icon: "done",
position: "top",
color: "positive",
message: res.Message,
}
},
goUrl(path, Names) {
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
Name: Name,
});
},
goUrl2(path, Names) { //班级
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
ClassName: Name,
});
if(res.Code===1){
this.getData()
},
goUrl3(path, ID) { //订单跳转
this.OpenNewUrl(path, {
OrderId: ID,
});
},
seeClassUseDetail(item){
let obj={
StudentId:76,
TeacherId:0,
ClassId:16
}
this.$refs.dialog.hide();
})
console.log(752,item)
// this.OpenNewUrl("/teacher/studentsClassSee",obj)
}
},
goUrl(path,Names){
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
Name: Name,
});
},
goUrl2(path,Names){//班级
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
ClassName: Name,
});
},
goUrl3(path,ID){//订单跳转
this.OpenNewUrl(path, {
OrderId: ID,
});
},
}
}
......
......@@ -3,33 +3,33 @@
list-style-type: none;
}
.activeType ul {
.stuList ul {
padding: 0px;
}
.activeType li {
.stuList li {
background: rgba(221, 222, 224, 0.2);
border-radius: 4px;
margin-top: 15px;
}
.activeType li .dline {
.stuList li .dline {
display: table;
width: 100%;
display: flex;
flex-direction: row;
}
.activeType li .d1,
.activeType li .d2,
.activeType li .d3,
.activeType li .d4,
.activeType li .d5 {
.stuList li .d1,
.stuList li .d2,
.stuList li .d3,
.stuList li .d4,
.stuList li .d5 {
width: 18%;
padding: 20px 20px 10px;
}
.activeType li .d7 {
.stuList li .d7 {
flex: 1;
width: 1px;
display: flex;
......@@ -38,19 +38,19 @@
justify-content: center;
}
.activeType li .d1 .di-title {
.stuList li .d1 .di-title {
font-size: 16px;
color: #111111;
}
.activeType li .d1 .di-c {
.stuList li .d1 .di-c {
font-size: 14px;
display: flex;
line-height: 28px;
color: #111111;
}
.activeType li .d6 {
.stuList li .d6 {
padding: 10px 20px;
width: 100%;
height: inherit;
......@@ -58,7 +58,7 @@
border-top: 1px solid #dddee0;
}
.activeType li .d6 .progress {
.stuList li .d6 .progress {
width: 100%;
height: 5px;
position: absolute;
......@@ -66,41 +66,41 @@
bottom: 0;
}
.activeType li .d2 div {
.stuList li .d2 div {
margin: 2px 0;
font-size: 14px;
color: #111111;
}
.activeType li .d2-n {
.stuList li .d2-n {
font-size: 12px;
color: #999999;
margin-right: 20px;
}
.activeType li .d3 .d3-s {
.stuList li .d3 .d3-s {
color: var(--q-color-negative);
font-weight: bold;
}
.activeType li .d3 div {
.stuList li .d3 div {
margin: 2px 0;
font-size: 14px;
}
.activeType li .d4 div {
.stuList li .d4 div {
font-size: 14px;
color: #111111;
margin: 2px 0;
}
.activeType li .d5 div {
.stuList li .d5 div {
font-size: 14px;
color: #111111;
margin: 2px 0;
}
.activeType .myCourseNName {
.stuList .myCourseNName {
width: 25px;
height: 25px;
border-radius: 50%;
......@@ -110,7 +110,7 @@
background-color: #004d40;
}
.activeType .app-image {
.stuList .app-image {
background-position: center center;
width: 50px;
height: 50px;
......@@ -131,6 +131,16 @@
background-color: transparent;
}
.Sysuser_Date .el-range-editor .el-range-input {
width: 100%;
border: none;
background-color: transparent;
}
.el-picker-panel {
z-index: 99999 !important;
}
.syster_qDropdown .q-btn__wrapper {
padding: 0 3px;
min-height: 0 !important;
......@@ -148,13 +158,13 @@
</style>
<template>
<div class="page-body activeType">
<div class="page-body stuList">
<div class="row q-mb-md">
<q-space></q-space>
<!-- <el-badge :value="11" style="float:right"> -->
<div style="position:relative;">
<q-btn color="accent" label="高级查询" @click="IsShowQuery=true"></q-btn>
<q-badge floating rounded color="red">11</q-badge>
<q-badge floating rounded color="red">{{queryNum}}</q-badge>
</div>
<!-- </el-badge> -->
......@@ -214,14 +224,86 @@
<template v-slot:top="props">
<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)">
{{props.row.ContractNo}}
</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)">
{{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)">
{{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)">
{{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)">
{{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)">
{{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)">
{{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)">
{{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)">
{{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)">
{{props.row.EventlogNum}}
</div>
</q-td>
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<div>
<q-btn flat size="xs" color="accent" style="font-weight:400" label="停课" v-if="props.row.GuestState===1" @click="" />
<q-btn flat size="xs" color="accent" style="font-weight:400" label="转班" @click="" />
<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 clickable v-close-popup @click="">
<q-item clickable v-close-popup @click="showAddEvent(props.row)">
<q-item-section>
<q-item-label>添加事件</q-item-label>
</q-item-section>
......@@ -238,9 +320,25 @@
</q-table>
</div>
<!-- 高级查询 -->
<MoreQuery v-if="IsShowQuery" @close="closeruleset" :save-obj="typeObj" @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" />
<!-- 转班申请 -->
<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" />
<!-- 班级详情 -->
<classinfo-form v-if="isShowClassInfo" :seting-obj="eventObj" @close="closeHandle"
@success="refreshPage"/>
<!-- 订单详情 -->
<myOrder-form v-if="isShowmyorderForm" :save-obj="eventObj" @close="closeHandle"></myOrder-form>
<!-- 可补课课时,缺勤次数,请假次数 -->
<list v-if="isShowList" :type="showType" :set-obj="eventObj" @close="closeHandle"/>
<!-- 事件记录 -->
<eventLog v-if="isShowEventLog" :set-obj="eventObj" @modify="modifyEvent" @close="closeHandle"/>
</div>
</template>
<script>
......@@ -251,15 +349,32 @@
import {
queryCourseDropdownList
} from '../../api/course/index'
import {getStuList} from '../../api/stuMan/index.js'
import {
getStuList,
getEarlyWarningEnum,
getTypeEnum,
} from '../../api/stuMan/index.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';//事件记录
export default {
meta: {
title: "学员名单"
},
components: {
MoreQuery
MoreQuery,
StopLessonForm,
transferclassForm,
AddEventForm,
classinfoForm,
myOrderForm,
list,
eventLog,
},
data() {
return {
......@@ -270,18 +385,18 @@
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
School_Id:-1,//校区
CourseId:0,//课程
ClassId:0,//班级
GuestName:'',//学生姓名
ClassNo:'',//班号
OrderId:"",//订单号
EnterID:0,//业务员
EffectStatus:0,//状态
JoinType:0,//类型
EarlyWarning:0,//预警
OrderTime:"",//下单时间
EndOrderTime:"",//下单结束时间
School_Id: -1, //校区
CourseId: 0, //课程
ClassId: 0, //班级
GuestName: '', //学生姓名
ClassNo: '', //班号
OrderId: 0, //订单号
EnterID: 0, //业务员
EffectStatus: "", //状态
JoinType: 0, //类型
EarlyWarning: 0, //预警
OrderTime: "", //下单时间
EndOrderTime: "", //下单结束时间
},
pageCount: 0,
columns: [{
......@@ -292,134 +407,134 @@
required: true,
},
{
name: "Name",
name: "GuestName",
label: "姓名",
align: "left",
field: "GuestName",
required: true,
},
{
name: "ActivityTypeName",
name: "Mobile",
label: "电话",
align: "left",
field: "Mobile"
},
{
name: "ActivityTime",
name: "ContractNo",
label: "合同编号",
align: "left",
field: "ContractNo",
},
{
name: "AgeAndPeopleNum",
name: "ClassName",
label: "班级",
align: "left",
field: "ClassName",
},
{
name: "activePrice",
name: "CourseName",
label: "课程",
align: "left",
field: "CourseName",
},
{
name: "LocationName",
name: "TeacherName",
label: "老师",
align: "left",
field: "TeacherName",
},
{
name: "activeStutes",
name: "OrderId",
label: "订单号",
align: "left",
field: "OrderId",
},
{
name: "activeStutes",
name: "OrderTime",
label: "报名时间",
align: "left",
field: "OrderTime",
},
{
name: "activeStutes",
name: "EnterName",
label: "业务员",
field: "EnterName",
align: "left"
},
{
name: "activeStutes",
name: "PreferPrice",
label: "应收金额",
field: "PreferPrice",
align: "left"
},
{
name: "activeStutes",
name: "Income",
label: "实收金额",
field: "Income",
align: "left"
},
{
name: "activeStutes",
name: "Refund",
label: "退款金额",
field: "Refund",
align: "left"
},
{
name: "activeStutes",
name: "TotalHours",
label: "课程总课时",
field: "TotalHours",
align: "left"
},
{
name: "activeStutes",
name: "ValidClassHours",
label: "有效课时",
field: "ValidClassHours",
align: "left"
},
{
name: "activeStutes",
name: "CompleteHours",
label: "消耗课时",
field: "CompleteHours",
align: "left"
},
{
name: "activeStutes",
name: "SurplusHours",
label: "剩余课时",
field: "SurplusHours",
align: "left"
},
{
name: "activeStutes",
name: "MakeUpHours",
label: "可补课课时",
field: "MakeUpHours",
align: "left"
},
{
name: "activeStutes",
name: "AbsenceNum",
label: "缺勤次数",
field: "AbsenceNum",
align: "left"
},
{
name: "activeStutes",
name: "LeaveNum",
label: "请假次数",
field: "LeaveNum",
align: "left"
},
{
name: "activeStutes",
name: "EventlogNum",
label: "事件记录",
field: "EventlogNum",
align: "left"
},
{
name: "activeStutes",
name: "GuestStateStr",
label: "状态",
field: "GuestStateStr",
align: "left"
},
{
name: "activeStutes",
name: "JoinTypeStr",
label: "类型",
field: "JoinTypeStr",
align: "left"
......@@ -431,8 +546,6 @@
align: "left"
}
],
showForm: false,
typeObj: {},
SchoolList: [],
CourseList: [],
AllCourseList: [],
......@@ -446,12 +559,29 @@
MoreStatus: "1,2,3",
IsQuerySurplusPlan: 0
},
typeEnum: [],
warnEnum: [],
queryNum: 0, //高级查询个数
isShowStopLesson: false,
stuObj: {}, //停课
isShowTransferClass: false, //是否显示转班
orderObj: {}, //转班
ChangeType: 1, //1-转班 2-分拆
isShowAddEvent: false, //是否显示添加事件
eventObj: {},
isShowClassInfo:false,//是否显示班级详情
isShowmyorderForm: false, //是否显示订单详情
isShowList:false,//是否显示可补课课时,缺勤次数,请假次数
showType:1,
isShowEventLog:false,//是否显示事件记录
}
},
mounted() {
this.getSchool();
this.getCourseList();
this.getClass();
this.getTypeEnum();
this.getEarlyWarningEnum();
this.getList();
},
methods: {
......@@ -534,52 +664,36 @@
this.resetSearch();
},
getList() {
// this.loading = true;
getStuList(this.msg).then(res=>{
console.log(535,res)
if(res.Code===1){
this.data=res.Data.PageData
this.pageCount=res.Data.PageCount
this.loading = true;
getStuList(this.msg).then(res => {
this.loading = false
if (res.Code === 1) {
this.data = res.Data.PageData
this.pageCount = res.Data.PageCount
}
}).catch(err => {
this.loading = false;
})
},
delActive(item) {
let that = this;
that.Confirm("是否删除?", function () {
that.apipostDS(
"/api/Education/RemoveActivity", {
Id: item.Id,
Status: 1
},
res => {
if (res.data.resultCode == 1) {
that.Success(res.data.message);
that.getList();
} else {
that.Error(res.data.message);
}
},
);
})
},
//刷新页面
refreshPage() {
this.showForm = false;
this.getList();
},
//显示修改
editQuotation(item) {
this.showForm = true;
if (item) {
this.typeObj = item;
} else {
this.typeObj = {};
}
//显示停课弹窗
ShowStopLesson(item) {
this.isShowStopLesson = true;
this.stuObj = item
},
// 高级查询
morequery(val) {
console.log(418, val)
this.IsShowQuery = false;
this.IsShowQuery = false
this.queryNum = val.chooseNum
this.msg.ClassNo = val.ClassNo
this.msg.OrderId = val.OrderId
this.msg.EnterID = val.EnterID
this.msg.EffectStatus = val.EffectStatus
this.msg.JoinType = val.JoinType
this.msg.EarlyWarning = val.EarlyWarning
this.msg.OrderTime = val.OrderTime
this.msg.EndOrderTime = val.EndOrderTime
this.resetSearch();
},
//重新查询
resetSearch() {
......@@ -592,10 +706,21 @@
this.getList()
},
//关闭弹窗
closeruleset() {
this.showForm = false;
closeHandle() {
this.IsShowQuery = false;
this.isShowStopLesson = false;
this.isShowTransferClass = false;
this.isShowAddEvent = false;
this.isShowClassInfo=false;
this.isShowmyorderForm=false;
this.isShowList=false;
this.isShowEventLog=false;
this.isShowEventLog=false;
},
//刷新页面
refreshPage() {
this.closeHandle();
this.getList();
},
goUrl(url, item) {
if (item) {
......@@ -623,6 +748,76 @@
}
})
},
getTypeEnum() {
getTypeEnum({}).then(res => {
if (res.Code === 1) {
res.Data.unshift({
Name: "不限",
Id: 0
})
this.typeEnum = res.Data
}
})
},
getEarlyWarningEnum() {
getEarlyWarningEnum({}).then(res => {
if (res.Code === 1) {
this.warnEnum = res.Data
}
})
},
//转班
transferClass(item, type) {
this.orderObj = item;
this.ChangeType = type;
this.isShowTransferClass = true;
},
//显示添加事件
showAddEvent(item) {
let newitem=JSON.parse(JSON.stringify(item))
newitem.Id=0
this.eventObj = newitem
this.isShowAddEvent = true;
},
//查看合同
seeContract(item){
this.OpenNewUrl("/contractView",{ContractId:item.ContractId})
},
//查看课时消耗
seeStudentsClassUse(item){
let obj={
StudentId:item.Id,
TeacherId:item.Teacher_Id,
ClassId:item.ClassId
}
this.OpenNewUrl("/teacher/studentsClassSee",obj)
},
//查看班级详情
seeClassDetail(item){
this.eventObj=item
this.isShowClassInfo=true
},
//查看订单详情
showOrderDetail(item,tab){
item.tab = tab
this.eventObj=item
this.isShowmyorderForm=true
},
showList(item,type){
this.eventObj=item
this.showType=type
this.isShowList=true
},
showEventLog(item){
this.eventObj=item
this.isShowEventLog=true
},
// 修改事件
modifyEvent(val){
this.closeHandle();
this.eventObj=val
this.isShowAddEvent=true
}
}
}
......
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