Commit 2307d119 authored by 罗超's avatar 罗超
parents f7f4d9ba 5bbcafff
......@@ -20,7 +20,7 @@ export default {
</script>
<style>
@import url("//at.alicdn.com/t/font_2077629_bgk17xi4zj.css");
@import url("//at.alicdn.com/t/font_2077629_w1o8daso6r9.css");
@font-face{
font-family: 'din';
src: url('./assets/font/DIN-Bold.otf') format('opentype');
......@@ -36,6 +36,12 @@ export default {
.q-scrollarea__thumb {
z-index: 999999 !important;
}
body{
min-width:1360px !important;
}
header{
min-width:1360px ;
}
html,
body,
#q-app {
......
......@@ -280,4 +280,16 @@ export function GetStudentAdvisorPage(data) {
method: 'post',
data
})
}
/**
* 获取上课记录
* @param {JSON参数} data
*/
export function GetStuLearnChapterList(data) {
return request({
url: '/Scroll/GetStuLearnChapterList',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -485,5 +485,55 @@ export function queryGuestStateList(data) {
});
}
//获取月份统计数据
export function GetStudentStatic(data) {
return request({
url: '/StudentStat/GetStudentStatic',
method: 'post',
data
});
}
//获取每月统计数据
export function GetStudentStaticMonth(data) {
return request({
url: '/StudentStat/GetStudentStaticMonth',
method: 'post',
data
});
}
//获取每月成长率数据
export function GetStudentStaticRateMonth(data) {
return request({
url: '/StudentStat/GetStudentStaticRateMonth',
method: 'post',
data
});
}
//获取月度数据
export function GetStudentStaticYear(data) {
return request({
url: '/StudentStat/GetStudentStaticYear',
method: 'post',
data
});
}
//获取月度数据
export function GetStudentStaticYearRate(data) {
return request({
url: '/StudentStat/GetStudentStaticYearRate',
method: 'post',
data
});
}
......@@ -344,4 +344,15 @@ export function delHolidayPlan(data) {
method: 'post',
data: data
})
}
/**
* 获取日期范围 所有排课计划列表
* @param {JSON参数} data
*/
export function getToDayCoursePlanList(data) {
return request({
url: '/TeacherClass/GetToDayCoursePlanList',
method: 'post',
data: data
})
}
\ No newline at end of file
......@@ -79,4 +79,12 @@ export function getEventLogPageList(data) {
method: 'post',
data
})
}
// 设置学生跳课
export function setGuestStartChapter(data) {
return request({
url: '/Scroll/SetGuestStartChapter',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -58,7 +58,8 @@ export function SetAdminScrollAppointment(data) {
method: 'post',
data
})
}/**
}
/**
* 后台取消预约
*/
export function CancelAppointment(data) {
......@@ -67,7 +68,8 @@ export function CancelAppointment(data) {
method: 'post',
data
})
}/**
}
/**
* 后台确认约课
*/
export function SetSureAppointment(data) {
......@@ -76,4 +78,54 @@ export function SetSureAppointment(data) {
method: 'post',
data
})
}
/**
* 学生合并
*/
export function SetAppointmentStuTransfer(data) {
return request({
url: '/Scroll/SetAppointmentStuTransfer',
method: 'post',
data
})
}
/**
* 获取可重上课的学生列表
*/
export function getCanAppointmentAgainList(data) {
return request({
url: '/Scroll/GetCanAppointmentAgainList',
method: 'post',
data
})
}
/**
* 学员重上课
*/
export function setAppointmentAgain(data) {
return request({
url: '/Scroll/SetAppointmentAgain',
method: 'post',
data
})
}
/**
* 获取可补课学生列表
*/
export function getCanMakeupStuList(data) {
return request({
url: '/Scroll/GetCanMakeupStuList',
method: 'post',
data
})
}
/**
* 学员补课
*/
export function setAppointmentMakeup(data) {
return request({
url: '/Scroll/SetAppointmentMakeup',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -115,14 +115,15 @@
.sticky-header-column-table
td:first-child
/* bg color is important for td; just specify one */
background-color: #c1f4cd !important
/* background-color: #c1f4cd !important */
tr th
position: sticky
/* higher than z-index for td below */
z-index: 2
z-index: 3
/* bg color is important; just specify one */
background: #fff
/* background: #fff */
background-color:#f5f6f7
/* this will be the loading indicator */
thead tr:last-child th
......
This diff is collapsed.
<style>
</style>
<style></style>
<template>
<div>
<el-collapse v-if="dayData&&dayData.SubList&&dayData.SubList.length>0">
<el-collapse-item v-for="(subItem,subIndex) in dayData.SubList" :key="subIndex" :name="subIndex">
<el-collapse v-if="dayData && dayData.SubList && dayData.SubList.length > 0">
<el-collapse-item v-for="(subItem, subIndex) in dayData.SubList" :key="subIndex" :name="subIndex">
<template slot="title">
<div class="plan_Tdiv">
<span v-if="subItem.TimeStr==='早上'" class="commonTimeStr greenTime">{{subItem.TimeStr}}</span>
<span v-if="subItem.TimeStr==='下午'" class="commonTimeStr blueTime">{{subItem.TimeStr}}</span>
<span v-if="subItem.TimeStr==='晚上'" class="commonTimeStr orangeTime">{{subItem.TimeStr}}</span>
<span v-if="subItem.ClassType==2">试听课</span>
<span style="color:red;margin:0 5px;">{{subItem.TeacherName}}</span>
<span>[{{subItem.RoomName}}]</span>
<span v-if="subItem.TimeStr === '早上'" class="commonTimeStr greenTime">{{ subItem.TimeStr }}</span>
<span v-if="subItem.TimeStr === '下午'" class="commonTimeStr blueTime">{{ subItem.TimeStr }}</span>
<span v-if="subItem.TimeStr === '晚上'" class="commonTimeStr orangeTime">{{ subItem.TimeStr }}</span>
<q-badge rounded color="orange" label="试听课" v-if="subItem.ClassType == 2"
style="margin-left:5px;font-size:10px" />
<q-badge rounded color="cyan-7" label="预约课" v-if="subItem.ClassType == 3"
style="margin-left:5px;font-size:10px" />
<q-badge rounded color="orange" label="跟班" v-if="subItem.ClassType == 2&&subItem.ReserveType==1"
style="margin-left:5px;font-size:10px" />
<span style="color:red;margin:0 5px;">{{
subItem.TeacherName
}}</span>
<span>[{{ subItem.RoomName }}]</span>
<template v-if="
subItem.ClassType == 3 &&
subItem.AppointState == 1 &&
isShowTag(subItem.GuestList, subItem.ScrollMinNum)
">
<q-badge color="red" rounded style="margin-left:5px;">
</q-badge>
</template>
</div>
</template>
<div class="plan_Inner">
<div class="plan_LeftTitle">上课时间:</div>
<div class="plan_RightInner">{{subItem.StartTime}}-{{subItem.EndTime}}</div>
<div class="plan_RightInner">
{{ subItem.StartTime }}-{{ subItem.EndTime }}
</div>
</div>
<div class="plan_Inner" v-if="subItem.ClassName&&subItem.ClassType!==3">
<div class="plan_Inner" v-if="subItem.ClassName && subItem.ClassType !== 3">
<div class="plan_LeftTitle">班级:</div>
<div class="plan_RightInner">{{subItem.ClassName}}</div>
<div class="plan_RightInner">{{ subItem.ClassName }}</div>
</div>
<div class="plan_Inner">
<div class="plan_LeftTitle">课程名称:</div>
<div class="plan_RightInner">{{subItem.CourseName}}</div>
<div class="plan_RightInner">{{ subItem.CourseName }}</div>
</div>
<div class="plan_Inner" v-if="subItem.GuestList&&subItem.GuestList.length>0">
<div class="plan_Inner" v-if="subItem.GuestList && subItem.GuestList.length > 0">
<div class="plan_LeftTitle">学生名称:</div>
<div class="plan_RightInner">
<span style="margin-right:10px;" v-for="(tItem,tIndex) in subItem.GuestList"
:key="tIndex">{{tItem.GuestName}}</span>
<span style="margin-right:10px;" v-for="(tItem, tIndex) in subItem.GuestList"
:key="tIndex">{{ tItem.GuestName }}
<span v-if="tItem.AppointType == 2">(补)</span>
<span v-if="tItem.AppointType == 3">(重)</span>
</span>
</div>
</div>
<div class="plan_Inner" style="align-items:center;" v-if="subItem.CompleteProgress>=0">
<div class="plan_LeftTitle">课程进度:</div>
<div class="plan_RightInner">
<el-progress :percentage="subItem.CompleteProgress"></el-progress>
<template v-if="subItem.ClassType == 1||subItem.ClassType == 3">
<div class="plan_Inner" style="align-items:center;">
<div class="plan_LeftTitle">课程进度:</div>
<div class="plan_RightInner">
<span v-if="subItem.ClassType == 1">{{ subItem.Ranks }}/{{ subItem.TotalPlanNum }}</span>
<span v-if="subItem.ClassType == 3&&subItem.CourseGradeIdName" class="q-mr-sm">{{subItem.CourseGradeIdName}}</span>
<span v-if="subItem.ClassType == 3">{{ subItem.Ranks||0 }}次课</span>
</div>
</div>
</div>
</template>
<template v-if="subItem.ClassType == 3">
<div class="plan_Inner">
<div class="plan_LeftTitle">课程状态:</div>
<div class="plan_RightInner" style="color: rgb(239, 83, 80);" v-if="subItem.AppointState == 1">
待确认
</div>
<div class="plan_RightInner" style="color: rgb(33, 186, 69);" v-if="subItem.AppointState == 2">
已确认
</div>
</div>
<div class="plan_Inner" v-if="subItem.ScrollMinNum">
<div class="plan_LeftTitle">最小成班:</div>
<div class="plan_RightInner">
<span style="color: rgb(33, 186, 69);">{{
subItem.ScrollMinNum
}}</span>
</div>
</div>
</template>
</el-collapse-item>
</el-collapse>
</div>
......@@ -52,20 +94,27 @@
default: null
}
},
components: {
},
components: {},
data() {
return {
}
return {};
},
created() {},
mounted() {
},
mounted() {},
methods: {
isShowTag(arr, min) {
let n = 0;
arr.map(e => {
if (e.AppointType !== 3) {
n += 1;
}
});
if (n < min) {
return true;
} else {
return false;
}
}
}
}
};
</script>
\ No newline at end of file
......@@ -80,14 +80,14 @@
<div class="row wrap shifttc">
<el-time-select class="q-mr-lg" v-model="shiftOption.StartTime" :picker-options="{
start: '00:00',
step: '00:15',
step: '00:05',
end: '23:55',
maxTime:shiftOption.EndTime
}" placeholder="班次开始时间(格式00:00)">
</el-time-select>
<el-time-select v-model="shiftOption.EndTime" :picker-options="{
start: '06:00',
step: '00:15',
step: '00:05',
end: '23:55',
minTime:shiftOption.StartTime
}" placeholder="班次结束时间(格式00:00)">
......
......@@ -72,7 +72,7 @@
</div>
<div class="info-content">
<div class="detail-info">
<baseInfo :Data="detailData" @confirm="saveBaseInfo"></baseInfo>
<baseInfo :Data="detailData" :isCanEdit="isCanEdit" @confirm="saveBaseInfo"></baseInfo>
</div>
<div class="detail-log">
<right :Id="rowId" :tabId="tabId"></right>
......@@ -113,6 +113,10 @@ export default {
tabId: {
type: Number,
default: 1
},
isCanEdit: {
type: Boolean,
default: null
}
},
data() {
......@@ -168,6 +172,7 @@ export default {
};
GetCustomer(msg).then(res => {
if (res.Code == 1) {
console.log(res,'res');
let tempData = res.Data;
this.detailData.CustomerId = tempData.CustomerId;
this.detailData.ApproveState = tempData.ApproveState;
......@@ -225,6 +230,8 @@ export default {
});
this.$emit("success");
}
}).catch(()=>{
this.initObj();
});
},
//同业转交
......
......@@ -175,6 +175,10 @@
Data: {
type: Object,
default: null
},
isCanEdit: {
type: Boolean,
default: null
}
},
data() {
......@@ -199,7 +203,9 @@
},
methods: {
showEdit(field) {
this.editField = field
if(this.isCanEdit){
this.editField = field
}
},
save(field,val,Validate=false){
if(Validate){
......
......@@ -79,7 +79,7 @@
</customerEdit-form>
<customerReview-form v-if="isShowRightForm" :customerObj="customerObj" @close="closeCustomForm"
@success="refreshQuestion"></customerReview-form>
<customerInfo v-if="isShowDetailForm" :rowId="curRowId" :tabId="tabId" :empList="employeeList"
<customerInfo v-if="isShowDetailForm" :rowId="curRowId" :isCanEdit="isCanEdit" :tabId="tabId" :empList="employeeList"
@close="closeCustomForm" :auth="AuthorityObj" @success="refreshQuestion"></customerInfo>
</div>
</template>
......@@ -241,7 +241,8 @@
//员工列表
employeeList: [],
myEmployeeList: [],
isShowTrans: false
isShowTrans: false,
isCanEdit: false
};
},
created() {
......@@ -311,6 +312,19 @@
showDetail(row, tabId = 1) {
this.curRowId = row.CustomerId;
this.tabId = tabId;
let UserInfo = this.getLocalStorage();
let isHavePer=false;
if (UserInfo.ActionMenuList && UserInfo.ActionMenuList.length > 0) {
UserInfo.ActionMenuList.forEach((x) => {
if (x.FunctionCode == "Is_EditContact") {
isHavePer = true;
}
});
}
//创建者为本人或者有权限 才能修改
if(UserInfo.Id==row.CreateBy||isHavePer){
this.isCanEdit = true;
}
this.isShowDetailForm = true;
},
//删除客户
......
......@@ -7,6 +7,7 @@
cursor: pointer;
color: var(--q-color-primary);
}
</style>
<template>
<div class="b2bcustomlist">
......@@ -16,8 +17,8 @@
<q-space />
<div class="page-option">
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" @click="EditCustom(null)" label="新增客户" />
<q-btn v-if="authObj&&authObj.isShowDownload" color="accent" class="q-mr-md" size="sm" icon="download" label="下载"
@click="downLoadCustomer" />
<q-btn v-if="authObj&&authObj.isShowDownload" color="accent" class="q-mr-md" size="sm" icon="download"
label="下载" @click="downLoadCustomer" />
</div>
</template>
<template v-slot:body-cell-CategoryName="props">
......@@ -43,10 +44,12 @@
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" @click="EditCustom(props.row)" style="font-weight:400"
label="修改" />
<q-btn flat size="xs" icon="delete" @click="RemoveCustomer(props.row)" color="negative"
style="font-weight:400" label="删除" />
<template v-if="props.row.isCanEdit">
<q-btn flat size="xs" icon="edit" color="accent" @click="EditCustom(props.row)" style="font-weight:400"
label="修改" />
<q-btn flat size="xs" icon="delete" @click="RemoveCustomer(props.row)" color="negative"
style="font-weight:400" label="删除" />
</template>
</q-td>
</template>
<template v-slot:bottom>
......@@ -56,15 +59,15 @@
<categoryEdit-form v-if="isShowCategoryForm" :customerObj="customerObj" @close="closeCustomForm"
@success="refreshQuestion">
</categoryEdit-form>
<peerRight v-if="isShowDetailForm" :CategoryId="CategoryId" @close="closeCustomForm" :auth="AuthorityObj"
@success="refreshQuestion"></peerRight>
<peerRight v-if="isShowDetailForm" :CategoryId="CategoryId" :isCanEdit="isCanEdit" @close="closeCustomForm"
:auth="AuthorityObj" @success="refreshQuestion"></peerRight>
</div>
</template>
<script>
import {
deleteCustomerCategory
} from "../../api/users/user";
import {
import {
EduDownLoad
} from "../../api/common/common";
import categoryEditForm from "../sale/categoryEdit-form";
......@@ -155,7 +158,8 @@
isShowRebate: false //是否显示返佣
},
isShowDetailForm: false,
CategoryId: 0
CategoryId: 0,
isCanEdit: false
};
},
created() {
......@@ -232,8 +236,22 @@
//客户详情
showDetail(row) {
this.CategoryId = row.CategoryId;
let UserInfo = this.getLocalStorage();
let isHavePer = false;
if (UserInfo.ActionMenuList && UserInfo.ActionMenuList.length > 0) {
UserInfo.ActionMenuList.forEach(x => {
if (x.FunctionCode == "Is_EditPeer") {
isHavePer = true;
}
});
}
//创建者为本人或者有权限 才能修改
if (UserInfo.Id == row.CreateBy || isHavePer) {
this.isCanEdit = true;
}
this.isShowDetailForm = true;
}
}
};
</script>
\ No newline at end of file
</script>
......@@ -371,10 +371,8 @@
return
}
if (!this.$refs.CustomerName.hasError) {
this.saveCustomLoading = true;
SetCustomer(this.objOption).then(res => {
if (res.Code == 1) {
this.saveCustomLoading = false;
this.$q.notify({
icon: "iconfont icon-chenggong",
color: "accent",
......
......@@ -1165,20 +1165,8 @@
<eduinfo-form v-if="isShowEduForm" :seting-obj="eduObj" @close="closeEdudia" @success="refreshPage">
</eduinfo-form>
<div v-if="isShowContract" class="_show_img_box" @click="(isShowContract = false), (imgViewList = [])">
<div style="
position: absolute;
max-width: 800px;
height: auto;
left: 50%;
top: 50%;
margin-left: -400px;
margin-top: -300px;
">
<!-- <el-carousel :initial-index="initialIndex" height="600px" :interval="5000" trigger="click">
<el-carousel-item style="height: 600px; overflow: auto" v-for="(item, index) in imgViewList" :key="index">
<img :src="item" style="" />
</el-carousel-item>
</el-carousel> -->
<div
style="position: absolute;max-width: 800px; height: auto; left: 50%;top: 50%; margin-left: -400px; margin-top: -300px;">
<el-image style="width: 100%; height: 100%" fit="cover" v-for="(item, index) in imgViewList" :key="index"
:src="item" :preview-src-list="imgViewList">
</el-image>
......@@ -1268,9 +1256,9 @@
type: Number,
default: 0
},
loading:{
type:Boolean,
default:false,
loading: {
type: Boolean,
default: false,
}
},
data() {
......@@ -1986,6 +1974,7 @@
this.teacherMsg.HelpEnterId =
item.HelpEnterId > 0 ? item.HelpEnterId : "";
},
//修改关联老师
setCheckStatus() {
if (
this.teacherMsg.HelpEnterId == 0 ||
......@@ -2148,7 +2137,6 @@
background-color: #ffffff;
padding: 9px 15px;
color: #333333;
/*border: 1px solid #d2d2d2;*/
}
.classorder table ._color_666 {
......@@ -2168,9 +2156,7 @@
border-collapse: collapse;
}
.classorder .enrollTotalSearchTable tr {
/* border-bottom: 2px solid #333; */
}
.classorder .enrollTotalSearchTable tr {}
.classorder .enrollTotalSearchTable tr th {
background: #dddee0;
......@@ -2195,8 +2181,6 @@
.classorder .enrollTotalSearchTable tr td {
height: 66px;
padding: 10px;
/*border-top: 1px solid #cccccc;*/
/*border-left: 1px solid #cccccc;*/
}
.classorder .enrollTotalSearchTable tr td>img {
......@@ -2278,7 +2262,6 @@
}
.table-body {
/* height: 590px; */
overflow-x: hidden;
overflow-y: auto;
}
......
......@@ -50,6 +50,10 @@
Data: {
type: Object,
default: null
},
isCanEdit: {
type: Boolean,
default: null
}
},
data() {
......@@ -71,7 +75,9 @@
},
methods: {
showEdit(field) {
this.editField = field
if(this.isCanEdit){
this.editField = field
}
},
save(field,val,Validate=false){
if(Validate){
......
......@@ -13,7 +13,7 @@
</div>
<div class="info-content">
<div class="detail-info">
<baseInfo :Data="detailData" @confirm="saveBaseInfo"></baseInfo>
<baseInfo :Data="detailData" :isCanEdit="isCanEdit" @confirm="saveBaseInfo"></baseInfo>
</div>
<div class="detail-log">
<right :Id="CategoryId"></right>
......@@ -52,6 +52,10 @@
auth: {
type: Object,
default: null
},
isCanEdit: {
type: Boolean,
default: null
}
},
data() {
......@@ -87,7 +91,6 @@
};
queryCustomerCategory(msg).then(res => {
if (res.Code == 1) {
console.log(res, '数据');
this.detailData = res.Data;
}
});
......@@ -97,8 +100,6 @@
},
saveBaseInfo(obj) {
this.detailData[obj.field] = obj.val;
console.log(this.detailData, 'this.detailData');
let msg = {
CategoryName: this.detailData.CategoryName,
CatetoryType: this.detailData.CatetoryType,
......
......@@ -39,6 +39,12 @@
{{props.row.CreateTimeStr}}
</q-td>
</template>
<template v-slot:body-cell-ReserveType="props">
<q-td :props="props">
<span v-if="props.row.ReserveType==0">正常试听</span>
<span v-if="props.row.ReserveType==1">跟班试听</span>
</q-td>
</template>
<template v-slot:body-cell-JoinNum="props">
<q-td auto-width :props="props">
<span style="color:red;cursor:pointer"
......@@ -72,7 +78,7 @@
<q-item-label>收支明细</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="editVisitor(props.row)">
<q-item clickable v-close-popup @click="editVisitor(props.row)" v-if="props.row.ReserveType==0">
<q-item-section>
<q-item-label>修改</q-item-label>
</q-item-section>
......@@ -176,6 +182,12 @@
align: 'left',
field: 'ClassContent',
},
{
name: 'ReserveType',
label: '类型',
align: 'left',
field: 'ReserveType',
},
{
name: 'CreateByName',
label: '创建人',
......@@ -190,7 +202,7 @@
],
//表格可见列
visibleColumns: [
'TeacherName', 'ClassDateStr', 'ClassTime', 'RoomName', 'LessonName', 'JoinNum', 'OrderCount', 'ConversionRates', 'ClassContent',
'TeacherName', 'ClassDateStr', 'ClassTime', 'RoomName', 'LessonName', 'JoinNum', 'OrderCount', 'ConversionRates', 'ClassContent', "ReserveType",
'CreateByName','TeacherId'
], //可见列
reserveObj: {},
......
<template>
<div class="transfer-order">
<q-dialog v-model="persistent" persistent content-class="bg-grey-1" transition-show="scale" transition-hide="scale"
@hide="$emit('close')">
<q-card style="width: 850px;max-width:850px;">
<q-card-section class="row items-center q-pb-none">
<div class="text-h6">{{msg.Type==1?'留学':'就业'}}订单</div>
<q-space />
<q-btn icon="close" flat round dense v-close-popup />
</q-card-section>
<q-card-section class="q-pt-none scroll">
<q-stepper v-model="step" ref="stepper" color="primary" animated flat>
<q-step :name="1" title="选择课程" icon="settings" :done="step > 1">
<div class="page-search row items-center">
<div class="col row wrap q-col-gutter-md">
<div class="col-6">
<q-select @input="resetSearch" filled option-value="Id" option-label="Name" v-model="msg.Type"
:options="studyList" emit-value map-options label="类型" />
</div>
<div class="col-6">
<q-input @change="resetSearch" clearable filled v-model="msg.Name" label="项目名称" @clear="resetSearch"
maxlength="20" />
</div>
</div>
</div>
<abroadlist :dataList="dataList" :loading="loading" @select="selectCourse" :select="defaultCourse"></abroadlist>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="PageCount"
:input="true" @input="changePage" />
</q-step>
<q-step :name="2" title="确认" icon="settings" :done="step > 2">
<studyForm ref="orderForm" :save-obj="saveObj" :select="selectedArr" @success="$emit('close')" @cancelloading='cancelloading'></studyForm>
</q-step>
</q-stepper>
</q-card-section>
<q-card-actions align="right" class="bg-white q-mx-md ">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" v-close-popup />
<q-btn @click="$refs.stepper.previous()" color="primary" label="上一步" v-if="step > 1" />
<q-btn @click="next" color="primary" label="下一步" v-if="step < 2" />
<q-btn label="保存" color="primary" :loading="loading1" @click="saveOrderForm" v-if="step == 2" />
</q-card-actions>
</q-card>
</q-dialog>
</div>
</template>
<script>
import {
queryCourseDropdownList,
getCourseSubject
} from "../../../api/course/index";
import {
queryStudyAbroadPage
} from '../../../api/studyabroad/index'
import abroadlist from "./transfer-order/abroadlist";
import studyForm from "./transfer-order/study-form";
export default {
props: {
select: {
type: Array,
default: () => []
}
},
components: {
abroadlist,
studyForm
},
data() {
return {
persistent: true,
step: 1,
loading1: false, //防止多次点击
msg: {
Type: 1, //1留学 2就业
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
Name: "",
IsQPrice: 1,
SaleState: "", //销售状态
ProductType: "", //产品类型
StudyCountryId: "", //国家编号
},
dataList: [],
defaultCourse: [],
saveObj: {}, //所选数据
loading:false,
studyList: [{
Id: 1,
Name: '留学'
}, {
Id: 2,
Name: '就业'
}],
PageCount: 0,
selectedArr:[]
};
},
mounted() {
if(this.select){
this.selectedArr = this.select;
}
this.getList();
},
methods: {
//获取留学 就业数据
getList() {
this.loading = true;
queryStudyAbroadPage(this.msg).then(res => {
this.loading = false;
if (res.Code == 1) {
this.dataList = res.Data.PageData;
this.PageCount = res.Data.PageCount;
}
})
},
// 课程翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
// 选择课程
selectCourse(val) {
if(val&&val.length>0){
this.saveObj = val[0];
this.defaultCourse = val;
}
},
next() {
if (!this.saveObj.Id || this.saveObj.Id == 0) {
this.$q.notify({
type: "negative",
position: "top",
message: `请选择项目名称`
});
return;
}
this.$refs.stepper.next();
},
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
saveOrderForm() {
this.loading1 = true
this.$refs.orderForm.saveOrderInfo();
},
cancelloading() {
this.loading1 = false
},
}
};
</script>
<style scoped>
/deep/.el-input__inner {
background-color: transparent;
border: none;
}
/deep/.q-stepper__step-inner {
padding: 0 24px;
}
</style>
<style>
.record_Main {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.StuCkedType {
color: #3470ff;
font-weight: 700;
}
.record_cala_Num {
height: 20px;
padding-left: 14px;
background: #d0d5db;
border-radius: 10px;
margin: 10px 20px 0 0;
position: absolute;
left: 15px;
top: 50%;
margin-top: -10px;
}
.record_cala_Num>span {
min-width: 24px;
height: 24px;
padding: 4px;
margin: -2px -4px 0 0;
background: #d0d5db;
display: block;
border-radius: 20px;
}
.record_cala_Num>span>i {
min-width: 16px;
height: 16px;
padding: 0 2px;
line-height: 16px;
background: #fff;
font-size: 12px;
font-family: Arial;
color: #a8a8b3;
border-radius: 20px;
display: block;
text-align: center;
font-style: normal;
}
</style>
<template>
<div>
<div>
<q-tabs v-model="ckedTab" @input="getTabcheck()" dense align="left" class="text-teal" style="margin-bottom:20px;">
<q-tab v-for="(item,index) in dataList" :key="index" :name="index" :label="item.CourseName+'('+item.OrderId+')'" />
</q-tabs>
</div>
<div class="record_Main">
<div style="display:flex;justify-content:space-between;align-items:center;">
<div>课程进度:{{CourseChapterNo}}/{{TotalChapterNo}}</div>
<div>
<q-select dense filled v-model="Status" @input="getStatus" style="width:160px;margin-right:10px;" :options="StatusList" option-label="Name" option-value="Id"
emit-value map-options label="状态" />
</div>
</div>
<div>
<el-table :data="chapterList" v-loading="loading" ref="table" :height="tableHeight" style="width: 100%;">
<el-table-column prop="ChapterNo" label="章节" width="400">
<template slot-scope="scope">
<div style="display: inline-block;">
<div class="flex q-ml-md">
<div class="record_cala_Num">
<span>
<i>{{ scope.row.ChapterNo }}</i>
</span>
</div>
<div style="margin-left: 36px;width:320px;" class="ellipsis">
{{ scope.row.ChapterName }}
</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="State" label="状态" width="70">
<template slot-scope="scope">
<div v-if="scope.row.State == 1">
<span class="text-warning" v-if="scope.row.AppointState==1">待确认</span>
<span class="text-info" v-if="scope.row.AppointState==2">待上课</span>
<span class="text-positive" v-if="scope.row.AppointState==3">已上课</span>
</div>
<div class="text-warning" v-if="scope.row.State == 2">补课</div>
<div class="text-negative" v-if="scope.row.State == 3">缺课</div>
</template>
</el-table-column>
<el-table-column prop="AgainNum" label="重学次数" width="80">
<template slot-scope="scope">
{{scope.row.AgainNum}}
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import {
GetStuLearnChapterList //学员订单分页列表
} from "../../../api/customerstudent/customerstudent";
export default {
meta: {
title: "上课记录"
},
components: {},
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
StatusList: [{
Name: '全部',
Id: 0
},{
Name: '正常上课',
Id: 1
}, {
Name: '补课',
Id: 2
}, {
Name: '缺课',
Id: 3
}],
dataList: [],
loading: false,
Status:0,//状态
msg: {
StuId: ''
},
chapterList:[], //章节
ckedTab:0,
CourseChapterNo:0, //当前进度
TotalChapterNo:0, //总进度
tableHeight: 200,
};
},
created() {
if (this.saveObj.StuId > 0) {
this.msg.StuId = this.saveObj.StuId;
}
},
mounted() {
setTimeout(() => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 100;
}, 100)
this.getList();
},
methods: {
getList() {
this.loading = true;
GetStuLearnChapterList(this.msg).then(res => {
this.loading = false;
if (res.Code == 1) {
this.dataList = res.Data;
if(this.dataList.length>0){
this.chapterList = this.dataList[0].ChapterList;
this.CourseChapterNo = this.dataList[0].CourseChapterNo;
this.TotalChapterNo = this.dataList[0].TotalChapterNo;
}
}
});
},
getTabcheck(){
this.chapterList = this.dataList[this.ckedTab].ChapterList;
this.CourseChapterNo = this.dataList[this.ckedTab].CourseChapterNo;
this.TotalChapterNo = this.dataList[this.ckedTab].TotalChapterNo;
},
//根据状态过滤
getStatus(){
let dataArray = [];
if(this.Status==0){
dataArray = this.dataList[this.ckedTab].ChapterList;
}else{
this.dataList[this.ckedTab].ChapterList.forEach(x=>{
if(x.State==this.Status){
dataArray.push(x);
}
})
}
this.chapterList = dataArray;
}
}
};
</script>
This diff is collapsed.
......@@ -69,6 +69,11 @@
height: 80px;
position: relative;
}
.stage_value .q-field__native span {
width: 100%;
overflow: hidden;
}
</style>
<template>
<div>
......@@ -157,7 +162,7 @@
</div>
</div>
</div>
<template v-if="BelongType != 3">
<template v-if="IsShowStuSourceIdName(customObj)">
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">
......@@ -293,7 +298,6 @@
</q-field>
</div>
</div>
<div class="info_item">
<div class="item_label">日语基础</div>
<div class="item_value">
......@@ -321,13 +325,6 @@
:disable="noEdit" option-value="Id" emit-value map-options />
</div>
</div>
<!-- <div class="info_item">
<div class="item_label">创建人</div>
<div class="item_value">
<q-select filled v-model="customObj.CreateBy" dense disable @filter="filterEmployee" use-input
:options="myEmployeeList" option-label="EmployeeName" option-value="Id" emit-value map-options />
</div>
</div> -->
<div class="info_item" v-if="!noEdit">
<q-btn color="accent" class="q-mr-md" label="保存" @click="saveStu()" />
</div>
......@@ -381,6 +378,7 @@
type: Number,
default: null
},
//1-当前登录人自己创建,3-不是当前登录人创建
BelongType: {
type: Number,
default: null
......@@ -442,12 +440,14 @@
QQ: "",
WeChatNo: ""
},
NeedData: [],
noEdit: false,
isHaveOrder: false
NeedData: [], //客户需求列表
noEdit: false, //是否可以修改编辑客户信息
isHaveOrder: false, //学员是否有订单
userInfo: {}, //当前登录人员
};
},
created() {
this.userInfo = this.getLocalStorage();
this.getStuStageList();
this.getBasicList();
this.queryGuestEducationEnumList();
......@@ -459,17 +459,16 @@
this.getCustomTypeList();
this.getStudentDorpDown();
this.getGetNeedsList();
this.getStuOrderPage();
if (this.saveObj && this.saveObj.StuId > 0) {
this.customMsg.StuId = this.saveObj.StuId;
this.checkMsg.StuId = this.saveObj.StuId;
if (this.saveObj) {
if (this.saveObj.StuId > 0) {
this.customMsg.StuId = this.saveObj.StuId;
this.checkMsg.StuId = this.saveObj.StuId;
}
if (this.saveObj.noEdit && this.saveObj.noEdit == true) {
this.noEdit = true;
}
}
if (this.BelongType == 3) {
this.noEdit = true;
}
},
watch: {
stuData() {
......@@ -477,6 +476,25 @@
}
},
methods: {
//是否显示关联来源人信息
IsShowStuSourceIdName(item) {
var isHaveAuth = false;
if (this.userInfo && this.userInfo.ActionMenuList && this.userInfo.ActionMenuList.length >
0) {
this.userInfo.ActionMenuList.forEach((x) => {
if (x.FunctionCode == "Look_StuSourceId") {
isHaveAuth = true;
}
});
}
if (item.CreateBy == this.userInfo.Id || isHaveAuth) {
return true;
} else if (item.StuId == 0) {
return true;
} else {
return false;
}
},
uploadFile(files) {
UploadSelfFile("studentIcon", files, res => {
if (res.Code == 1) {
......@@ -722,7 +740,6 @@
);
});
},
init() {
const tempDate = this.stuData;
this.customObj.StuId = tempDate.StuId;
......@@ -746,26 +763,11 @@
this.customObj.QQ = tempDate.QQ;
this.customObj.WeChatNo = tempDate.WeChatNo;
this.customObj.StuNeeds = tempDate.StuNeeds;
this.customObj.StuTel=tempDate.StuTel;
if (this.customObj.StuId > 0) {
this.customObj.StuTel = tempDate.StuTel;
//有订单
if (tempDate.OrderCount && tempDate.OrderCount > 0) {
this.isHaveOrder = true;
}
},
//新增协助人员
addAssist() {
let obj = {
Id: 0, //编号
AssistId: 1, //员工编号
AssistType: 1, //类型
StuId: 1 //学员编号
};
this.customObj.AssistList.push(obj);
},
//删除协助人员
delAssist(index) {
this.customObj.AssistList.splice(index, 1);
},
//验证手机号
CheckExistsStu(type) {
......@@ -801,27 +803,6 @@
this.customObj.StuSourceId = "";
this.customObj.PlatformName = "";
},
getStuOrderPage() {
let customMsg = {
pageIndex: 1,
pageSize: 10,
StuId: 0
};
if (this.saveObj) {
customMsg.StuId = this.saveObj.StuId;
}
queryStuOrderPage(customMsg).then(res => {
if (res.Code == 1) {
if (this.customObj.StuId > 0) {
if (res.Data.PageData.length > 0) {
this.isHaveOrder = true;
} else {
this.isHaveOrder = false;
}
}
}
});
}
}
};
</script>
......
......@@ -6,12 +6,14 @@
<q-timeline-entry v-for="(item,index) in orderList" :key="index">
<template v-slot:title>
<div class="visit_Cont Log_Content">
<div>订单编号:<span class="Stu_OrderId" @click="goOrderDetail(item.OrderId)">{{item.OrderId}}</span></div>
<div>班级名称:{{item.ClassName}}</div>
<div>班级编号:{{item.ClassNo}}</div>
<div>
<span class="Stu_HtLeft">总课时</span>{{item.TotalHours}}</div>
<div>完成课时:{{item.CompleteHours}}</div>
<div>订单编号:<span class="Stu_OrderId" @click="goOrderDetail(item)">{{item.OrderId}}</span></div>
<template v-if="item.OrderType!=2">
<div>班级名称:{{item.ClassName}}</div>
<div>班级编号:{{item.ClassNo}}</div>
<div>
<span class="Stu_HtLeft">总课时</span>{{item.TotalHours}}</div>
<div>完成课时:{{item.CompleteHours}}</div>
</template>
<div>学员名称:{{item.GuestName}}</div>
<div>课程名称:{{item.CourseName}}</div>
</div>
......@@ -76,10 +78,17 @@
this.customMsg.pageIndex = val;
this.getStuOrderPage();
},
goOrderDetail(OrderId){
this.OpenNewUrl('/sale/myOrder', {
OrderId: OrderId
})
goOrderDetail(item){
if(item.OrderType==1){
this.OpenNewUrl('/sale/myOrder', {
OrderId: item.OrderId
})
}
if(item.OrderType==2){
this.OpenNewUrl('/sale/studyOrder', {
OrderId: item.OrderId
})
}
}
},
}
......
......@@ -18,15 +18,9 @@
@click="isShowAdd = false"
/>
</div> -->
<reserveclass-form
:saveObj="saveObj"
@close="closeReserveForm"
@success="closeReserveForm"
v-if="!saveObj.IsHaveCurseManager || userInfo.IsCourseConsultant == 1"
></reserveclass-form>
<span v-else class="text-grey-4 q-mb-md"
>学员已推送课程顾问,只能进行查看</span
>
<reserveclass-form :saveObj="saveObj" @close="closeReserveForm" @success="closeReserveForm"
v-if="!saveObj.IsHaveCurseManager || userInfo.IsCourseConsultant == 1"></reserveclass-form>
<span v-else class="text-grey-4 q-mb-md">学员已推送课程顾问,只能进行查看</span>
<div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
<div class="TimeLineDiv">
<q-timeline color="primary">
......@@ -34,10 +28,14 @@
<template v-slot:title>
<div class="visit_Cont">
<div class="Log_Content">
<q-chip color="primary" size="xs" text-color="white" style="position:absolute;:top:0;right:0" v-if="tItem.ReserveType==1">
跟班
</q-chip>
<div>
预约时间:{{ tItem.ClassDateStr }} {{ tItem.ClassTime }}-{{
tItem.EndTime
}}
</div>
<div class="StuCom_Remark">
<div style="flex-shrink:0">主讲内容:</div>
......@@ -49,11 +47,8 @@
<span class="StuCom_Left">教室</span>{{ tItem.RoomName }}
</div>
</div>
<div
@click="DeleteVisitorReserve(tItem.Id)"
style="margin-top:10px;"
class="visit_delete text-negative"
>
<div @click="DeleteVisitorReserve(tItem.Id)" style="margin-top:10px;"
class="visit_delete text-negative">
删除
</div>
</div>
......@@ -69,110 +64,105 @@
</div>
</div>
<div style="margin:20px 0;">
<q-pagination
class="full-width justify-end"
v-model="qMsg.pageIndex"
color="primary"
:max="page_Count"
input
@input="changePage"
/>
<q-pagination class="full-width justify-end" v-model="qMsg.pageIndex" color="primary" :max="page_Count" input
@input="changePage" />
</div>
</div>
</template>
<script>
import {
SetVisitorReserve,
queryVisitorReservePage,
RemoveVisitorReserve
} from "../../../api/scheduling/schedu";
import {
SetVisitorReserve,
queryVisitorReservePage,
RemoveVisitorReserve
} from "../../../api/scheduling/schedu";
import {
getTeacherDropDownList,
queryClassRoomList,
GetTrialLessonList
} from "../../../api/school/index";
import reserveclassForm from "./reserveclass-form";
export default {
meta: {
title: ""
},
components: {
reserveclassForm
},
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
isShowAdd: false,
qMsg: {
pageIndex: 1,
pageSize: 12,
Visitor_Id: 0
},
dataList: [],
page_Count: 0,
userInfo: {}
};
},
created() {
if (this.saveObj) {
this.qMsg.Visitor_Id = this.saveObj.StuId;
this.userInfo = this.getLocalStorage();
}
},
mounted() {
this.getList();
},
methods: {
//获取试听列表
getList() {
queryVisitorReservePage(this.qMsg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data.PageData;
this.page_Count = res.Data.PageCount;
}
});
import {
getTeacherDropDownList,
queryClassRoomList,
GetTrialLessonList
} from "../../../api/school/index";
import reserveclassForm from "./reserveclass-form";
export default {
meta: {
title: ""
},
changePage(val) {
this.qMsg.pageIndex = val;
this.getList();
components: {
reserveclassForm
},
//删除试听
DeleteVisitorReserve(Id) {
let that = this;
this.$q
.dialog({
title: "提示信息",
message: "是否确定此试听信息删除?",
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消"
})
.onOk(() => {
RemoveVisitorReserve({
Id: Id
}).then(res => {
that.$q.notify({
icon: "iconfont icon-chenggong",
timeout: 2000,
message: res.Message,
position: "top"
});
that.getList();
});
})
.onCancel(() => {});
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
isShowAdd: false,
qMsg: {
pageIndex: 1,
pageSize: 12,
Visitor_Id: 0
},
dataList: [],
page_Count: 0,
userInfo: {}
};
},
closeReserveForm() {
this.isShowAdd = false;
created() {
if (this.saveObj) {
this.qMsg.Visitor_Id = this.saveObj.StuId;
this.userInfo = this.getLocalStorage();
}
},
mounted() {
this.getList();
},
methods: {
//获取试听列表
getList() {
queryVisitorReservePage(this.qMsg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data.PageData;
this.page_Count = res.Data.PageCount;
}
});
},
changePage(val) {
this.qMsg.pageIndex = val;
this.getList();
},
//删除试听
DeleteVisitorReserve(Id) {
let that = this;
this.$q
.dialog({
title: "提示信息",
message: "是否确定此试听信息删除?",
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消"
})
.onOk(() => {
RemoveVisitorReserve({
Id: Id
}).then(res => {
that.$q.notify({
icon: "iconfont icon-chenggong",
timeout: 2000,
message: res.Message,
position: "top"
});
that.getList();
});
})
.onCancel(() => {});
},
closeReserveForm() {
this.isShowAdd = false;
this.getList();
}
}
}
};
};
</script>
......@@ -32,9 +32,6 @@
data() {
return {
persistent: true,
msg: {
},
baseObj: {},
}
},
......
......@@ -134,7 +134,6 @@
myEmployeeList: [],
customFromList: [],
StuChannelList: [], //收客渠道
AssistDropList: [], //协助人员
customList: [],
customTypeList: [] //客户类型
};
......
......@@ -47,6 +47,7 @@
<q-tab :name="3" label="订单" />
<q-tab :name="4" label="合同" />
<q-tab v-if="!baseObj.noEdit" :name="5" label="服务人员" />
<q-tab :name="6" label="上课记录" />
</q-tabs>
<div class="operate_Content" style="flex:1;">
<div class="detail_Main">
......@@ -91,6 +92,9 @@
<student-Assit :save-obj="baseObj" :BelongType="BelongType" @success="refreshStudentPage">
</student-Assit>
</template>
<template v-if="ckedTab == 6">
                  <classRecord :save-obj="baseObj" @success="refreshStudentPage"></classRecord>
                </template>
</div>
</div>
</div>
......@@ -126,6 +130,7 @@
import studentOrder from "../student/student-order";
import studentAssit from "../student/student-Assit";
import consultFrom from "../student/consult-from";
import classRecord from "../student/class-record"
import {
SetStudentAssistBatch
} from "../../../api/sale/sale";
......@@ -144,13 +149,15 @@
studentOrder,
studentAssit,
consultFrom,
studentConsult
studentConsult,
classRecord
},
props: {
saveObj: {
type: Object,
default: null
},
//是否显示转交
isJudgeTrans: {
type: Number,
default: null
......@@ -225,7 +232,7 @@
});
}
this.getEmployeeList();
if(this.checkType&&this.checkType>0){
if (this.checkType && this.checkType > 0) {
this.ckedTab = this.checkType;
}
},
......@@ -257,8 +264,8 @@
refreshStudentPage() {
this.$emit("success");
},
//客户情况信息的修改
consultsuccess(data) {
//质询信息的修改
this.$emit("success");
this.isconsult = false;
this.baseObj.PlanPrice = data.PlanPrice;
......@@ -314,6 +321,7 @@
this.customStateList = res.Data;
});
},
//查询学员(客户)详情
queryStuInfo() {
getStudentInfo({
StuId: this.saveObj.StuId
......@@ -326,6 +334,7 @@
}
});
},
//批量推送课程顾问
assistBatchHandler() {
if (this.pushing || this.baseObj.IsHaveCurseManager) return;
this.pushing = true;
......@@ -338,6 +347,7 @@
this.pushing = false;
});
},
//显示客户情况弹窗
consultbtn() {
this.isconsult = true;
}
......@@ -554,7 +564,6 @@
.operate_Content {
overflow: auto;
/* padding-right: 20px; */
}
.operate_Content::-webkit-scrollbar {
......
This diff is collapsed.
<template>
<q-table :pagination="msg" selection="single" :loading="loading" :selected.sync="selection" no-data-label="暂无相关数据" flat
class="sticky-tow-column-table sticky-two-header-table" separator="none" :data="dataList" :columns="columns"
row-key="Id" @update:selected="emitSel" table-class="table" hide-bottom>
</q-table>
</template>
<script>
export default {
props: {
dataList: {
type: Array,
default: () => []
},
select: {
type: Array,
default: () => []
},
loading: {
type: Boolean,
default: null
}
},
data() {
return {
selection: [],
msg: {
pageIndex: 1,
rowsPerPage: 0
},
columns: [{
name: "ProductTypeName",
label: "类型",
align: "left",
field: "ProductTypeName"
},
{
name: "Name",
label: "项目名称",
field: "Name",
align: "left"
},
{
name: "StudyCountryName",
label: "留学国家",
field: "StudyCountryName",
align: "left"
},
{
name: "SellPrice",
label: "实际卖价",
field: "SellPrice",
align: "left"
}
]
};
},
mounted() {
this.selection = this.select
},
methods: {
emitSel(val) {
this.$emit("select", val)
},
}
};
</script>
<style>
.table {
max-height: 400px;
}
.table::-webkit-scrollbar {
width: 5px;
height: 5px;
}
.table::-webkit-scrollbar-track {
background: #fff;
border-radius: 2px;
}
.table::-webkit-scrollbar-thumb {
background: #444;
border-radius: 10px;
}
.table::-webkit-scrollbar-thumb:hover {
background: #999;
}
.table::-webkit-scrollbar-corner {
background: #204754;
}
</style>
......@@ -225,7 +225,7 @@
class="col-6 q-py-sm"
label="客人来源"
/>
<q-select
<!-- <q-select
:disable="
modityOrderType == 2 || OrderMsg.JoinType == 3 || HelpEnterDisable
"
......@@ -249,7 +249,7 @@
</q-item-section>
</q-item>
</template>
</q-select>
</q-select> -->
<q-select
:disable="
modityOrderType == 2 ||
......@@ -498,7 +498,7 @@ export default {
if (res.Code == 1) {
res.Data.map(e => {
if (e.AssistType == 4) {
this.OrderMsg.HelpEnterId = e.AssistId;
// this.OrderMsg.HelpEnterId = e.AssistId;
this.HelpEnterDisable = true;
}
if (e.AssistType == 2) {
......
This diff is collapsed.
......@@ -7,7 +7,7 @@
@input="resetSearch"
clearable
filled
v-model="msg.CourseName"
v-model="msg.ClassName"
label="课程名称"
@clear="resetSearch"
maxlength="20"
......@@ -57,7 +57,7 @@
>
<template v-slot:body-cell-CourseName="props">
<q-td :props="props">
{{ props.row.CourseName }}-{{props.row.ClassNo}}
{{ props.row.CourseName }}
</q-td>
</template>
<template v-slot:bottom>
......@@ -143,6 +143,7 @@ export default {
msg: {
pageIndex: 1,
pageSize: 8,
rowsPerPage: 0,
ClassName: "", //班级名称
StartTime: "", //开始时间
EndTime: "", //结束时间
......@@ -156,6 +157,7 @@ export default {
CourseSubject: "", //所属科目
CourseName:"",
ClassScrollType :2,
IsQuerySalePlat:1
},
CourseSubjectList: [],
//课程分类树形列表
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -9,7 +9,6 @@
<!-- <div class="tab" :class="{'active-tab':tab==2}" @click="checkTab(2)">年度
<div class='dot' v-show="tab==2"></div>
</div> -->
</div>
<div>
<el-date-picker v-model="msg.Month" value-format="yyyy-MM" size="small" :type="elDateType" style="width:110px"
......@@ -240,7 +239,7 @@
style: 'color: #A4A5B7',
}, {
name: 'Rate',
label: '比例',
label: '发放比例',
align: 'center',
field: "Rate",
headerStyle: 'color: #A4A5B7;width: 100px',
......
......@@ -36,16 +36,16 @@
</VueApexCharts> -->
<div class="return-commission-Statistics flex wrap content-start">
<div class="Statistics-block">
<div class="Statistics-num">
<span class="Statistics-pre">¥</span>
{{formatInt(ReturnCommissionData.SttlementMoney)}}{{formatDecimal(ReturnCommissionData.SttlementMoney)}}
<div class="Statistics-num StatisticHiper" @click="goFanyong()">
<span class="Statistics-pre"></span>
{{formatInt(ReturnCommissionData.SttlementMoney)}}{{formatDecimal(ReturnCommissionData.SttlementMoney)}}
</div>
<div class="Statistics-label">
已返佣
</div>
</div>
<div class="Statistics-block">
<div class="Statistics-num">
<div class="Statistics-num StatisticHiper" @click="goDaiFan()">
<span class="Statistics-pre"></span>
{{formatInt(ReturnCommissionData.UnSettlementMoney)}}{{formatDecimal(ReturnCommissionData.UnSettlementMoney)}}
</div>
......@@ -323,6 +323,25 @@ import {
GetCenterCommissionStatistics().then(res=>{
this.ReturnCommissionData=res.Data
})
},
//跳转到返佣
goFanyong(){
let userinfo = this.getLocalStorage();
this.OpenNewUrl('/financial/returnPassbook/returnpassbookStatistics', {
CommissionType: 1,
OrderSourceType: 1,
OrderSourceId:userinfo.Id
});
},
//跳转到待返佣
goDaiFan(){
let userinfo = this.getLocalStorage();
this.OpenNewUrl('/financial/returnPassbook/returnpassbookStatistics', {
Status: 0,
CommissionType: 1,
OrderSourceType: 1,
OrderSourceId:userinfo.Id
});
}
}
};
......@@ -487,4 +506,9 @@ import {
.work-con::-webkit-scrollbar-corner {
background: #204754;
}
.StatisticHiper{
color:var(--q-color-primary) !important;
text-decoration:underline;
cursor:pointer;
}
</style>
This diff is collapsed.
This diff is collapsed.
<style>
.classHours .border-bottom {
padding-bottom: 5px;
margin-bottom: 5px;
......@@ -213,7 +209,7 @@
color="primary"
icon="add"
v-if="addMsg.TimeList.length == y + 1"
@click="addMsg.TimeList.push({ Sort: 1, StartTime: '', EndTime: '', Minutes: 0,ClassHours:'' })"
@click="addMsg.TimeList.push({ Sort: y+2, StartTime: '', EndTime: '', Minutes: 0,ClassHours:'' })"
style="margin-left: 10px;"
/>
</div>
......
......@@ -229,7 +229,13 @@
this.msg.TeacherId = Number(this.$route.query.TeacherId);
}
if(this.$route.query.TeacherIds){
this.msg.TeacherIds = this.$route.query.TeacherIds;
let arr=this.$route.query.TeacherIds.split(',')
let idsArr=[]
arr.map(e=>{
let _arr=e.split('-')
idsArr.push(_arr[1])
})
this.msg.TeacherIds = idsArr.toString();
}
}
this.getList();
......
......@@ -459,7 +459,7 @@
},watch: { // 监听参数变化
GetDetail: {
handler: function(val, oldVal) {
console.log(val,'val');
},
deep: true
},
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment