Commit 9819dec8 authored by 罗超's avatar 罗超

1

parent 507ba137
<style>
.editOrderDrawerTop {
width: 100%;
height: 50px;
display: flex;
justify-content: space-between;
background-color: #f0f5fb;
padding: 5px 10px;
align-items: center;
}
</style>
<!--高级查询-->
<template>
<q-dialog v-model="showquery" maximized full-height seamless position="right">
<q-card style="margin-top:61px;width:500px" class="no-border-radius classinfo_Dialog q-px-md">
<q-card-section>
<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="班号"
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="订单号"
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
@filter="filterEmployee">
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<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>    
</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="状态" />
</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="类型" />
</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="预警" />
</div>
<q-card-section>
<q-btn color="accent" label="查询" @click="query" style="float:right"></q-btn>
</q-card-section>
</q-card>
<div class="dialog-out-close" @click="closeEditOrder"
style="height:40px !important;border-top-left-radius: 4px !important;border-bottom-left-radius: 4px !important;">
<q-icon name="iconfont icon-jujue1" size="26px" />
</div>
</q-dialog>
</template>
<script>
import {
queryEmployee
} from '../../api/users/user'; //获取员工
import {
getClassDropDownList
} from '../../api/school/index'; //获取校区列表
export default {
name: "editOrder-form",
props: {
},
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
},
],
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,
},
EmployeeList: [], //员工列表
AllemployeeList: [], //所有员工列表
CourseList: [], //课程列表
courseObj: {}, //选择的课程
Teacher_Id: 0,
ClassName: ''
}
},
mounted() {
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(() => {
if (val === '') {
this.EmployeeList = JSON.parse(JSON.stringify(this.AllemployeeList))
} else {
const needle = val.toLowerCase();
this.EmployeeList = this.AllemployeeList.filter(v => v.EmployeeName.toLowerCase().indexOf(needle) > -1);
}
})
},
//获取业务员
getEmployee() {
var qMsg = {
Dept_Id: 0
}
queryEmployee(qMsg).then(res => {
if (res.Code == 1) {
this.EmployeeList = res.Data;
this.AllemployeeList = res.Data;
this.EmployeeList.unshift({
Id: 0,
EmployeeName: '不限'
});
}
}).catch(() => {})
},
//关闭弹窗
closeEditOrder() {
this.showquery = false;
this.$emit('close')
},
query() {
this.showquery = false;
this.$emit("success", this.msg)
}
}
}
</script>
<style>
li {
list-style-type: none;
}
.activeType ul {
padding: 0px;
}
.activeType li {
background: rgba(221, 222, 224, 0.2);
border-radius: 4px;
margin-top: 15px;
}
.activeType 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 {
width: 18%;
padding: 20px 20px 10px;
}
.activeType li .d7 {
flex: 1;
width: 1px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.activeType li .d1 .di-title {
font-size: 16px;
color: #111111;
}
.activeType li .d1 .di-c {
font-size: 14px;
display: flex;
line-height: 28px;
color: #111111;
}
.activeType li .d6 {
padding: 10px 20px;
width: 100%;
height: inherit;
position: relative;
border-top: 1px solid #dddee0;
}
.activeType li .d6 .progress {
width: 100%;
height: 5px;
position: absolute;
left: 0;
bottom: 0;
}
.activeType li .d2 div {
margin: 2px 0;
font-size: 14px;
color: #111111;
}
.activeType li .d2-n {
font-size: 12px;
color: #999999;
margin-right: 20px;
}
.activeType li .d3 .d3-s {
color: var(--q-color-negative);
font-weight: bold;
}
.activeType li .d3 div {
margin: 2px 0;
font-size: 14px;
}
.activeType li .d4 div {
font-size: 14px;
color: #111111;
margin: 2px 0;
}
.activeType li .d5 div {
font-size: 14px;
color: #111111;
margin: 2px 0;
}
.activeType .myCourseNName {
width: 25px;
height: 25px;
border-radius: 50%;
color: #fff !important;
text-align: center;
line-height: 25px;
background-color: #004d40;
}
.activeType .app-image {
background-position: center center;
width: 50px;
height: 50px;
border-radius: 0%;
float: left;
margin-right: 8px;
}
.Sysuser_Date .el-input {
width: 100%;
border: none;
background-color: transparent;
}
.Sysuser_Date .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
.syster_qDropdown .q-btn__wrapper {
padding: 0 3px;
min-height: 0 !important;
}
.editOrderDrawerTop {
width: 100%;
height: 50px;
display: flex;
justify-content: space-between;
background-color: #f0f5fb;
padding: 5px 10px;
align-items: center;
}
</style>
<template>
<div class="page-body activeType">
<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>
</div>
<!-- </el-badge> -->
</div>
<div class="page-search row items-center flex">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3 ">
<q-select @input="changeSchool" standout="bg-primary text-white" v-model="msg.school" class="col-6"
option-label="SName" option-value="SId" :options="SchoolList" emit-value map-options label="校区" />
</div>
<div class="col-3 ">
<q-select @input="changeCourse" standout="bg-primary text-white" v-model="msg.course" class="col-6"
option-label="CourseName" option-value="CourseId" use-input :options="CourseList" @filter="filterCourse"
emit-value map-options label="课程" clearable>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3 ">
<q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.class" class="col-6" use-input
@filter="filterClass" option-label="ClassName" option-value="ClassId" :options="classList" emit-value
map-options label="班级" clearable>
<template v-slot:option="{ itemProps, itemEvents, opt, selected, toggleOption }">
<q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section>
<q-item-label v-html="opt.ClassName"></q-item-label>
</q-item-section>
<q-item-section side>
<q-item-label v-html="opt.OpenTime"></q-item-label>
</q-item-section>
</q-item>
</template>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.name" label="学员姓名"
@clear="resetSearch" maxlength="20" />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-tow-column-table sticky-right-column-table" separator="none" :data="data" :columns="columns"
row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">学员名单</div>
</template>
<template v-slot:body-cell-activeName="props">
<q-td :props="props">
<div style="display:flex;align-items:center">
<div class="app-image"
:style="{backgroundImage:'url(' + props.row.CoverImg + ')',backgroundSize:'cover'}">
</div>
{{props.row.ActivityName}}
</div>
</q-td>
</template>
<template v-slot:body-cell-ActivityTime="props">
<q-td :props="props">
<div>
<div>活动时间:</div>
<div>{{props.row.StartTimeStr}}~{{props.row.EndTimeStr}}</div>
<div>报名时间:</div>
<div>{{props.row.SignStartTimeStr}}</div>
<div>{{props.row.SignEndTimeStr}}</div>
</div>
</q-td>
</template>
<template v-slot:body-cell-AgeAndPeopleNum="props">
<q-td :props="props">
<div>
<div v-if="props.row.Distinguish ==1">总人数:{{props.row.ManNum}}</div>
<div v-if="props.row.Distinguish ==0">男性:{{props.row.ManNum}}<span
style="margin-left:10px">女性:{{props.row.WoManNum}}</span> </div>
<div>
已报入:{{props.row.JoinNum}}
</div>
</div>
</q-td>
</template>
<template v-slot:body-cell-activePrice="props">
<q-td :props="props">
<div>
<div v-if="props.row.IsFree==1" style="color:green;">免费</div>
<div v-if="props.row.IsFree==2" style="color:red;">现金价格:{{props.row.Price}}</div>
<div>报名取消确认:{{props.row.IsCancelConfirm==1?'是':'否'}}</div>
<div>内部限制:{{props.row.IsCancelConfirm==1?'是':'否'}}</div>
</div>
</q-td>
</template>
<template v-slot:body-cell-LocationName="props">
<q-td :props="props">
<div style="width:200px;white-space: pre-line;">
{{props.row.LocationName}}
</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="报名列表"
@click="goUrl1('/activity/activeSignUpList',props.row)" />
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;">
<q-list>
<q-item clickable v-close-popup @click="">
<q-item-section>
<q-item-label>活动详情</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</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>
</div>
<!-- 高级查询 -->
<MoreQuery v-if="IsShowQuery" @close="closeruleset" :save-obj="typeObj" @success="morequery">
</MoreQuery>
</div>
</template>
<script>
import {
getSchoolDropdown,
getClassDropDownList,
} from '../../api/school/index'
import {
queryCourseDropdownList
} from '../../api/course/index'
import MoreQuery from '../../components/stuMan/moreQuery.vue'
export default {
meta: {
title: "学员名单"
},
components: {
MoreQuery
},
data() {
return {
IsShowQuery: false,
data: [],
loading: false,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
school: 0,
course: 0,
class: 0,
name: "",
},
pageCount: 0,
columns: [{
name: "Id",
label: "编号",
field: "Id",
align: "left",
required: true,
},
{
name: "Name",
label: "姓名",
align: "left",
field: "Id",
required: true,
},
{
name: "ActivityTypeName",
label: "电话",
align: "left",
field: "ActivityTypeName"
},
{
name: "ActivityTime",
label: "合同编号",
align: "left"
},
{
name: "AgeAndPeopleNum",
label: "班级",
align: "left"
},
{
name: "activePrice",
label: "课程",
align: "left"
},
{
name: "LocationName",
label: "老师",
field: "LocationName",
align: "left",
style: "width:100px"
},
{
name: "activeStutes",
label: "订单号",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "报名时间",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "业务员",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "应收金额",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "实收金额",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "退款金额",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "课程总课时",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "有效课时",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "消耗课时",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "剩余课时",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "可补课课时",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "缺勤次数",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "请假次数",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "事件记录",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "状态",
field: "ActivityStatusStr",
align: "left"
},
{
name: "activeStutes",
label: "类型",
field: "ActivityStatusStr",
align: "left"
},
{
name: 'optioned',
label: '操作',
required: true,
align: "left"
}
],
showForm: false,
typeObj: {},
SchoolList: [],
CourseList: [],
AllCourseList: [],
classList: [],
AllClassList: [],
queryClass: {
CourseId: 0,
IsAddDefault: 1,
SchoolId: -1,
Teacher_Id: 0,
MoreStatus: "1,2,3",
IsQuerySurplusPlan: 0
},
}
},
mounted() {
this.getSchool();
this.getCourseList();
this.getClass();
this.getList();
},
methods: {
//获取校区下拉
getSchool() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
this.SchoolList = res.Data;
var obj = {
SName: '不限',
SId: -1
}
this.SchoolList.unshift(obj);
}
})
},
//获取课程
getCourseList() {
queryCourseDropdownList({}).then(res => {
if (res.Code == 1) {
var tempArray = res.Data;
if (!tempArray) {
tempArray = [];
}
tempArray.unshift({
CourseId: 0,
CourseName: "不限"
})
this.CourseList = tempArray;
this.AllCourseList = tempArray;
}
})
},
// 筛选课程
filterCourse(val, update) {
update(() => {
if (val === '') {
this.CourseList = JSON.parse(JSON.stringify(this.AllCourseList))
} else {
const needle = val.toLowerCase();
this.CourseList = this.AllCourseList.filter(v => v.CourseName.toLowerCase().indexOf(needle) > -1);
}
})
},
//获取班级
getClass() {
getClassDropDownList(this.queryClass).then(res => {
this.classList = [];
this.msg.ClassId = 0
if (res.Code == 1) {
this.classList = res.Data;
this.AllClassList = res.Data;
var obj = {
ClassName: '不限',
ClassId: 0
}
this.classList.unshift(obj);
}
});
},
//筛选班级
filterClass(val, update) {
update(() => {
if (val === '') {
this.classList = JSON.parse(JSON.stringify(this.AllClassList))
} else {
const needle = val.toLowerCase();
this.classList = this.AllClassList.filter(v => v.ClassName.toLowerCase().indexOf(needle) > -1);
}
})
},
changeSchool(val) {
this.queryClass.SchoolId = val
this.getClass()
},
changeCourse(val) {
this.queryClass.CourseId = val
this.getClass()
},
getList() {
// this.loading = true;
// this.apipostDS("/api/Education/GetActivityPage", this.msg, (res) => {
// this.loading = false
// if (res.data.resultCode === 1) {
// this.data = res.data.data.pageData;
// this.pageCount = res.data.data.pageCount;
// }
// })
},
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 = {};
}
},
// 高级查询
morequery(val) {
console.log(418, val)
this.IsShowQuery = false;
},
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
//关闭弹窗
closeruleset() {
this.showForm = false;
this.IsShowQuery = false;
},
goUrl(url, item) {
if (item) {
this.$router.push({
path: url,
query: {
Id: item.Id
}
})
} else {
this.$router.push({
path: url,
query: {
Id: 0
}
})
}
},
goUrl1(url, item) {
this.$router.push({
path: url,
query: {
Id: item.Id,
name: item.ActivityName
}
})
},
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
...@@ -1047,6 +1047,11 @@ const routes = [{ ...@@ -1047,6 +1047,11 @@ const routes = [{
component: () => component: () =>
import("pages/stuMan/studentManage") import("pages/stuMan/studentManage")
}, },
{
path: "/stuMan/stuList",//学管 学员名单
component: () =>
import("pages/stuMan/stuList")
},
], ],
}, },
......
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