Commit 20acf0c7 authored by 吴春's avatar 吴春

1

parent e8319834
<template>
<div>
<q-card flat class="bg-white q-pa-md" style="width:400px;">
<div class="text-h6">{{saveObj==2?'新增考试':"月度总结"}}</div>
<template v-if="saveObj==2">
<div class="row q-col-gutter-md">
<q-input class="col-6" filled v-model="SaveMsg.StudyValue" dense label="时间"></q-input>
<q-input class="col-6" filled v-model="SaveMsg.Words" type="number" dense label="单词背诵"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-6" filled v-model="SaveMsg.Practice" type="number" dense label="练习题"></q-input>
<q-input class="col-6" filled v-model="SaveMsg.ReadingAloud" type="number" dense label="朗读/背诵"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<p>其他 <i class="el-icon-plus text-blue cursor-pointer" @click="SetStudentStudyOther"></i></p>
</div>
<div class="q-mt-xs row q-col-gutter-md" v-if='SaveMsg.Other&& SaveMsg.Other.length>0' v-for=" ( itemOther, indexOther ) in SaveMsg.Other " :key="indexOther">
<el-input class="col-6" placeholder="请输入" filled v-model="itemOther.Name" autofocus/>
<el-input class="col-4" placeholder="请输入" filled v-model="itemOther.Score" type="number" autofocus/>
<i class="el-icon-delete text-blue cursor-pointer col-2" @click="DelStudentStudyOther(indexOther)" style="margin-top:11px;"></i>
</div>
</template>
<template v-if="saveObj==3">
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-12" filled v-model="SaveMsg.StudyValue" dense label="月份"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-12" filled v-model="SaveMsg.Remarks" type="textarea" dense label="请输入学校情况"></q-input>
</div>
</template>
<q-separator class="q-my-md" />
<div class="text-right q-py-xs">
<q-btn flat color="dark" @click="closeForm" class="q-mr-md q-px-xs" label="取消"></q-btn>
<q-btn unelevated color="primary" class="q-px-md" label="保存" @click="SaveStudentStudy"></q-btn>
</div>
</q-card>
</div>
</template>
<script>
import {
SetStuStudyInfo,
} from '../../../api/studyabroad/index'
export default {
meta: {
title: "学员考试信息"
},
components: {},
props: {
saveObj: {
type: Number,
default: null
},
//数据
BaseInfo: {
type: Object,
default: null
},
},
data() {
return {
//客户对象
SaveMsg: {
CourseId: 0,
StuId:0,
GuestId:0,
ClassScrollType:0,
OrderId:0,
StudyID:0,
Words:'',
Practice:'',
ReadingAloud:'',
Other:[],
ChapterId:0,
StudyType:0,
Remarks:'',
StudyValue:'',
},
nowOther:{
Name:"",
Score:"",
},
};
},
created() {
},
mounted() {},
methods: {
SetStudentStudyOther(){
this.SaveMsg.Other.push(JSON.parse(JSON.stringify(this.nowOther)))
},
DelStudentStudyOther(indexOther){
if( this.SaveMsg.Other&& this.SaveMsg.Other.length>0){
this.SaveMsg.Other.splice(indexOther, 1);
}
},
//保存信息
SaveStudentStudy(){
this.SaveMsg.CourseId=this.BaseInfo.CourseId,
this.SaveMsg.StuId=this.BaseInfo.StuId,
this.SaveMsg.GuestId=this.BaseInfo.GuestId,
this.SaveMsg.OrderId=this.BaseInfo.OrderId;
if(this.saveObj==3){
this.SaveMsg.Words=0;
this.SaveMsg.Practice=0;
this.SaveMsg.ReadingAloud=0;
this.SaveMsg.ChapterId=0;
this.SaveMsg.Other='';
}
this.SaveMsg.StudyType=this.saveObj;
SetStuStudyInfo(this.SaveMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
}
this.$emit("success");
this.closeSaveForm();
})
.catch(() => {
this.loading = false;
});
// this.SaveMsg.Remarks=this.obj.Remarks,
// this.SaveMsg.StudyValue=this.obj.StudyValue,
},
closeSaveForm() {
this.$emit("close");
this.persistent = false;
},
clearSaveMsg(){
this.SaveMsg.CourseId= 0,
this.SaveMsg.StuId=0,
this.SaveMsg.GuestId=0,
this.SaveMsg.ClassScrollType=0,
this.SaveMsg.OrderId=0,
this.SaveMsg.StudyID=0,
this.SaveMsg.Words=0,
this.SaveMsg.Practice=0,
this.SaveMsg.ReadingAloud=0,
this.SaveMsg.Other=[],
this.SaveMsg.ChapterId=0,
this.SaveMsg.StudyType=0,
this.SaveMsg.Remarks='',
this.SaveMsg.StudyValue=''
},
closeForm() {
this.clearSaveMsg();
this.$emit("close");
},
}
};
</script>
\ No newline at end of file
<style scoped>
@import "../../../pages/financial/css/cssReset.css";
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.singeRowTable tr th {
border: 1px solid #d2d2d2;
}
.studentTracking td:first-child {
background-color: #E6E6E6;
position: sticky;
left: 0px;
}
.studentTracking th:first-child {
position: sticky;
left: 0px;
}
.stulistNumber {
display: inline-block;
width: 25px;
height: 25px;
text-align: center;
line-height: 22px;
border: 1px solid #2961FE;
border-radius: 50%;
cursor: pointer;
color: #2961FE;
}
.OCourseTable {
width: 400px;
text-align: center;
}
.OCourseTable tr td {
height: 40px;
}
.OCourseTable tr th {
height: 40px;
background-color: rgb(238, 238, 239);
}
.stufollowlistNumber {
display: inline-block;
width: 25px;
height: 25px;
text-align: center;
line-height: 22px;
border: 1px solid #2961FE;
border-radius: 50%;
cursor: pointer;
color: #2961FE;
}
</style>
<template>
<div class="stufollowlist">
<div style="width: 100%;overflow-x: auto;">
<table class="po_content singeRowTable" ref="table" style="border:1px solid #E6E6E6;" cellspacing="0"
cellpadding="0" v-loading="loading">
<tr>
<th width="120">月份</th>
<th style="min-width:250px;">学习情况</th>
<th width="100">操作</th>
</tr>
<template v-if='dataObj&& dataObj.length>0'>
<tr v-for=" ( item , index ) in dataObj " :key="index">
<td>
<el-input v-if="Edit.index==index" placeholder="请输入" v-model="item.ClassDate" size="mini" autofocus/>
<span v-else> {{ item.ClassDate }}</span>
</td>
<td>
<div>
<el-input type="textarea" v-if="Edit.index==index" :autosize="{ minRows: 2, maxRows: 50}" placeholder="请输入内容"v-model="item.Remarks"></el-input>
<span v-else> {{ item.Remarks }}</span>
</div>
</td>
<td>
<div class="text-blue cursor-pointer" >
<i class="el-icon-edit" @click="SetStudentStudy(item,index)" style="margin-right:15px;"></i>
<i class="el-icon-check" v-if="(item.Words||item.Practice||item.ReadingAloud||(item.Other&&item.Other.length>0))||item.StudyID>0" @click="SaveStudentStudy(item)"></i>
</div>
</td>
</tr>
</template>
</table>
</div>
<div v-if='dataObj&& dataObj.length>0'>
</div>
<div v-else
style="width: 100%;border:1px solid #E6E6E6;display: flex;align-items: center;justify-content: center;height: 60px;">
暂无数据
</div>
</div>
</template>
<script>
import {
saveStudentBaseInfo, //保存学员信息
} from "../../../api/school/index";
import {
SetStuStudyInfo,
} from '../../../api/studyabroad/index'
import UeEditor from "../../editor/UeEditor";
export default {
props: {
//数据
dataObj: {
type: Array,
default: null
},
//数据
BaseInfo: {
type: Object,
default: null
},
loading: {
type: Boolean,
default: false,
},
//表头数组
titlelist: {
type: Array,
default: null
},
//表头长度
CourseRateName: {
type: String,
default: '',
},
AuthObj: {
type: Object,
default: null
}
},
components: {
UeEditor,
},
data() {
return {
isShowStuFU: false,
isShowStuRight: false,
stuloading: false,
stuOption: {},
BelongType: 0,
ShowAuthObj: {
//是否显示同行、状态等信息
isShowSaleInfo: true,
},
SaveMsg: {
CourseId: 0,
StuId:0,
GuestId:0,
ClassScrollType:0,
OrderId:0,
StudyID:0,
Words:0,
Practice:0,
ReadingAloud:0,
Other:[],
ChapterId:0,
StudyType:0,
Remarks:'',
StudyValue:'',
},
nowOther:{
Name:"",
Score:"",
},
Edit:{
index:-1,
},
};
},
mounted() {
if (this.AuthObj) {
this.ShowAuthObj.isShowSaleInfo = this.AuthObj.isShowSaleInfo;
}
},
methods: {
//刷新表格
refreshTable() {
this.$emit("success");
},
getTeacherManager(row) {
let managerName = "<span class='text-grey-4'>暂无</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 4) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
}
});
}
return managerName;
},
SetStudentStudy(obj,index){
this.Edit.index=index;
},
//保存信息
SaveStudentStudy(obj){
this.SaveMsg.CourseId=this.BaseInfo.CourseId,
this.SaveMsg.StuId=this.BaseInfo.StuId,
this.SaveMsg.GuestId=this.BaseInfo.GuestId,
this.SaveMsg.OrderId=this.BaseInfo.OrderId,
this.SaveMsg.StudyID=obj.StudyID,
this.SaveMsg.Practice=0,
this.SaveMsg.ReadingAloud=0,
this.SaveMsg.Words=0,
this.SaveMsg.Other='';
this.SaveMsg.Remarks=obj.Remarks,
this.SaveMsg.StudyValue=obj.ClassDate;
this.SaveMsg.ChapterId=0,
this.SaveMsg.StudyType=3,
SetStuStudyInfo(this.SaveMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
}
this.clearSaveMsg();
this.refreshTable();
this.loading = false;
})
.catch(() => {
this.loading = false;
});
},
SetStudentStudyOther(index){
this.dataObj[index].Other.push(JSON.parse(JSON.stringify(this.nowOther)))
},
DelStudentStudyOther(obj,index,indexOther){
if(obj.Other&&obj.Other.length>0){
obj.Other.splice(indexOther, 1);
}
this.dataObj[index] = obj
},
clearSaveMsg(){
this.SaveMsg.CourseId= 0,
this.SaveMsg.StuId=0,
this.SaveMsg.GuestId=0,
this.SaveMsg. ClassScrollType=0,
this.SaveMsg. OrderId=0,
this.SaveMsg. StudyID=0,
this.SaveMsg.Words=0,
this.SaveMsg.Practice=0,
this.SaveMsg.ReadingAloud=0,
this.SaveMsg.Other=[],
this.SaveMsg. ChapterId=0,
this.SaveMsg.StudyType=0,
this.SaveMsg.Remarks='',
this.SaveMsg. StudyValue='',
this.Edit.index=-1;
},
//关闭弹窗
closeStuForm() {
this.isShowStuRight = false;
this.isShowStuFU = false;
},
}
};
</script>
This diff is collapsed.
<style scoped>
@import "../financial/css/cssReset.css";
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.singeRowTable tr th {
border: 1px solid #d2d2d2;
}
.studentTracking td:first-child {
background-color: #E6E6E6;
position: sticky;
left: 0px;
}
.studentTracking th:first-child {
position: sticky;
left: 0px;
}
.stulistNumber {
display: inline-block;
width: 25px;
height: 25px;
text-align: center;
line-height: 22px;
border: 1px solid #2961FE;
border-radius: 50%;
cursor: pointer;
color: #2961FE;
}
.OCourseTable {
width: 400px;
text-align: center;
}
.OCourseTable tr td {
height: 40px;
}
.OCourseTable tr th {
height: 40px;
background-color: rgb(238, 238, 239);
}
</style>
<template>
<div class="page-body studentTracking">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<p style="margin-bottom:10px;"> 学生姓名:<strong style="color:red;">{{this.$route.query.StuName}}</strong></p>
<q-select dense filled option-value="CourseId" option-label="CourseName" v-model="msg.CourseId"
:options="allCourseList" emit-value map-options label="课程名称"
@update:model-value="getCourseId" @input="refreshPage" />
</div>
</div>
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增考试" @click="AddExam(2)" />
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增月度总结" @click="AddExam(3)" />
</div>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="上课记录" name="first"></el-tab-pane>
<el-tab-pane label="月度总结" name="second"></el-tab-pane>
</el-tabs>
<div style="width: 100%;margin-top: 20px" v-if="activeName=='first'">
<stufollowlist :dataObj="dataList" :CourseRateName="CourseRateName" :BaseInfo="msg" @success="refreshPage" :titlelist="titlelist"
:loading="loading" ref="stuFollowList" :AuthObj="AuthObj"></stufollowlist>
</div>
<div style="width: 100%;margin-top: 20px" v-if="activeName=='second'">
<studentStudylMonthlist :dataObj="dataList" :CourseRateName="CourseRateName" :BaseInfo="msg" @success="refreshPage" :titlelist="titlelist"
:loading="loading" ref="studentStudylMonthlist" :AuthObj="AuthObj"></studentStudylMonthlist>
</div>
<q-dialog persistent v-model="isShowManagerForm">
<studentStudyAddForm :saveObj="managerOption" :BaseInfo="msg" @close="closeStuForm" @success="refreshPage">
</studentStudyAddForm>
</q-dialog>
</div>
</template>
<script>
import {
GetStuStudyList,
GetStuStudyMonthList,
} from '../../api/studyabroad/index'
import {
queryStuOrderPage, //学员订单分页列表
} from '../../api/customerstudent/customerstudent';
import {
EduDownLoad
} from "../../api/common/common";
import {
GetStudentAdvisorConfigList,
} from "../../api/customerstudent/customerstudent";
import stufollowlist from "../../components/school/student/studentStudylist";
import studentStudylMonthlist from "../../components/school/student/studentStudylMonthlist";
import studentStudyAddForm from "../../components/school/student/studentStudyAddForm";
import {
mapState
} from "vuex";
export default {
meta: {
title: "学员学校情况"
},
props: {},
components: {
stufollowlist,
studentStudylMonthlist,
studentStudyAddForm
},
data() {
return {
activeName: 'first',
AccountType: 2,
IsLeave: 1,
titlelist: [],
msg: {
CourseId: 0, //课程 "StuId":1746,"CourseId":322,"GuestId":1162,"ClassScrollType":2
StuId:0,
GuestId:0,
ClassScrollType:0,
OrderId:0,
},
loading: false,
isShowManagerForm:false,
dataList: null, //列表数据
managerOption: 0,
PageCount: 0,
CourseRateName: '',
allCourseList: [], //课程
myCourseList:[],
customMsg: {
pageIndex: 1,
pageSize: 10000,
StuId: 0,
},
AuthObj: {
isShowSaleInfo: false,
}
}
},
created() {
if (this.$route.query) {
if (this.$route.query.StuId) {
this.msg.StuId = this.customMsg.StuId = parseInt(this.$route.query.StuId)
}
if (this.$route.query.GuestId) {
this.msg.GuestId = this.customMsg.GuestId = parseInt(this.$route.query.GuestId)
}
if (this.$route.query.ClassScrollType) {
this.msg.ClassScrollType = this.customMsg.ClassScrollType = parseInt(this.$route.query.ClassScrollType)
} if (this.$route.query.CourseRateName) {
this.CourseRateName = this.$route.query.CourseRateName
}
}
this.getCourseList(); //获取课程下拉
},
computed: mapState({
//是否有下载权限
isHaveDownLoad(state) {
if (state.user.userInfo && state.user.userInfo.ActionMenuList && state.user.userInfo.ActionMenuList.length >
0) {
let action = state.user.userInfo.ActionMenuList.find(x => {
if (x.FunctionCode == "studentTracking_download") {
return x;
}
});
return action && action.FunctionCode;
}
return false;
}
}),
mounted() {
},
methods: {
handleClick(tab, event) {
this.refreshPage()
},
AddExam(type) {
this.isShowManagerForm = true;
this.managerOption=type;
},
//关闭表单
closeStuForm() {
this.isShowManagerForm = false;
},
getCourseId(val){
for(let i =0;i<this.allCourseList.length;i++){
if(this.allCourseList[i].CourseId==val){
this.msg.ClassScrollType=this.allCourseList[i].ClassScrollType
this.msg.OrderId=this.allCourseList[i].OrderId
}
}
console.log("我进来了哈哈哈哈1");
this.refreshPage()
},
//刷新页面
refreshPage() {
console.log("我进来了哈哈哈哈21");
this.getList()
},
//获取课程
getCourseList() {
queryStuOrderPage(this.customMsg).then(res => {
if (res.Code == 1) {
let data = res.Data.PageData
this.allCourseList = JSON.parse(JSON.stringify(data));
this.myCourseList = JSON.parse(JSON.stringify(data));
if(this.allCourseList&&this.allCourseList.length>0){
this.msg.CourseId=this.allCourseList[0].CourseId
this.msg.ClassScrollType=this.allCourseList[0].ClassScrollType
this.msg.OrderId=this.allCourseList[0].OrderId
this.getList(); //获取列表
}
}
});
},
getList() {
this.loading = true;
let msg = JSON.parse(JSON.stringify(this.msg))
if(this.activeName=='first'){
GetStuStudyList(this.msg).then(res => {
this.loading = false;
var pageData = JSON.parse(JSON.stringify(res.Data));
this.dataList = pageData;
})
.catch(() => {
this.loading = false;
});
}
else if(this.activeName=='second'){
GetStuStudyMonthList(this.msg).then(res => {
this.loading = false;
var pageData = JSON.parse(JSON.stringify(res.Data));
this.dataList = pageData;
})
.catch(() => {
this.loading = false;
});
}
},
filterFnkec(val, update) { //课程的栓选
update(() => {
if (val === '') {
this.myCourseList = this.allCourseList
} else {
const needle = val.toLowerCase();
this.myCourseList = this.allCourseList.filter(v => v.CourseName.toLowerCase().indexOf(needle) > -1);
}
})
},
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
<style scoped>
/deep/.el-input__inner,
/deep/.el-range-input {
background-color: transparent;
border: none;
}
.stics {
padding: 10px 20px;
background: #DDDEE0;
border-radius: 4px;
font-size: 13px;
color: #000000;
font-weight: bold
}
.stics .stics-name {
color: #2D2D2D;
font-weight: 600;
margin-right: 10px
}
.roatImg {
transform: rotate(180deg);
}
</style>
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