Compare commits
8 Commits
01718f573b
...
610aac6985
Author | SHA1 | Date |
---|---|---|
baigl | 610aac6985 | |
白了个白 | 6c85654608 | |
白了个白 | a5b6cd3516 | |
白了个白 | 578fc9feba | |
白了个白 | f49cba5e36 | |
白了个白 | 490add5467 | |
白了个白 | 634ae460f3 | |
白了个白 | 1cc7007852 |
|
@ -140,7 +140,7 @@ const getClassWorkList = () => {
|
||||||
edustage: userStore.edustage,// 学段
|
edustage: userStore.edustage,// 学段
|
||||||
edusubject: userStore.edusubject,//学科
|
edusubject: userStore.edusubject,//学科
|
||||||
deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期
|
deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期
|
||||||
orderby: 'uniquekey DESC',
|
orderby: 'concat(deaddate,uniquekey) DESC',
|
||||||
pageSize: 100
|
pageSize: 100
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
for (var i = 0; i < response.rows.length; i++) {
|
for (var i = 0; i < response.rows.length; i++) {
|
||||||
|
@ -213,7 +213,8 @@ const getStudentClassWorkData = () => {
|
||||||
edustage: userStore.edustage,// 学段
|
edustage: userStore.edustage,// 学段
|
||||||
edusubject: userStore.edusubject,//学科
|
edusubject: userStore.edusubject,//学科
|
||||||
deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期
|
deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期
|
||||||
orderby: "uniquekey DESC",
|
status: '1', // 作业状态:1-已发布
|
||||||
|
orderby: "uniquekey DESC",// TODO: 这里是否加 deaddate 的排序,后续看
|
||||||
pageSize: 1000
|
pageSize: 1000
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
for (var t = 0; t < classWorkList.value.length; t++) {
|
for (var t = 0; t < classWorkList.value.length; t++) {
|
||||||
|
@ -369,7 +370,8 @@ const getStudentVisible = async () => {
|
||||||
edustage: userStore.edustage,// 学段
|
edustage: userStore.edustage,// 学段
|
||||||
edusubject: userStore.edusubject,//学科
|
edusubject: userStore.edusubject,//学科
|
||||||
deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期
|
deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期
|
||||||
orderby: 'uniquekey DESC',
|
status: '1', // 作业状态:1-已发布
|
||||||
|
orderby: 'concat(deaddate,uniquekey) DESC',
|
||||||
pageSize: 100
|
pageSize: 100
|
||||||
})
|
})
|
||||||
const curWorkList = response.rows
|
const curWorkList = response.rows
|
||||||
|
|
|
@ -150,6 +150,7 @@
|
||||||
:min-scale="0.2"
|
:min-scale="0.2"
|
||||||
:preview-src-list="stuItem.imagefile"
|
:preview-src-list="stuItem.imagefile"
|
||||||
:initial-index="4"
|
:initial-index="4"
|
||||||
|
fit="contain"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
@ -233,6 +234,7 @@
|
||||||
.map((item) => item.url)
|
.map((item) => item.url)
|
||||||
"
|
"
|
||||||
:initial-index="4"
|
:initial-index="4"
|
||||||
|
fit="contain"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -276,6 +278,7 @@
|
||||||
.map((item) => item.url)
|
.map((item) => item.url)
|
||||||
"
|
"
|
||||||
:initial-index="4"
|
:initial-index="4"
|
||||||
|
fit="contain"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -314,102 +317,102 @@
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 批改评价与评语 -->
|
<!-- 批改评价与评语 -->
|
||||||
<div class="tacher_conten_foot">
|
<div class="tacher_conten_foot">
|
||||||
<el-row style="padding: 1% 4%; border: 2px dotted">
|
<el-row style="padding: 1% 4%; border: 2px dotted">
|
||||||
<el-col :span="24" style="display: flex; flex-direction: column">
|
<el-col :span="24" style="display: flex; flex-direction: column">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="14">
|
<el-col :span="14">
|
||||||
<div style="display: flex; margin: 10px auto">
|
<div style="display: flex; margin: 10px auto">
|
||||||
<span style="display: flex; align-items: center">
|
<span style="display: flex; align-items: center">
|
||||||
<span v-if="dialogProps.studentObj.worktype == '习题训练'">
|
<span v-if="dialogProps.studentObj.worktype == '习题训练'">
|
||||||
<span>得分: </span>
|
<span>得分: </span>
|
||||||
<span style="margin: 0; color: red">{{
|
<span style="margin: 0; color: red">{{
|
||||||
classWorkFormScore.teacherRating.reduce((a, b) => a + b.score, 0).toFixed(2)
|
classWorkFormScore.teacherRating.reduce((a, b) => a + b.score, 0).toFixed(2)
|
||||||
}}</span>
|
}}</span>
|
||||||
<span>分</span>
|
<span>分</span>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
<span>得分: </span>
|
<span>得分: </span>
|
||||||
<span v-if="classWorkFormScore.teacherRating.length > 0">
|
<span v-if="classWorkFormScore.teacherRating.length > 0">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="classWorkFormScore.teacherRating[0].score"
|
v-model="classWorkFormScore.teacherRating[0].score"
|
||||||
:controls="false"
|
:controls="false"
|
||||||
type="number"
|
type="number"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="classWorkFormScore.teacherRating[0].maxScore"
|
:max="classWorkFormScore.teacherRating[0].maxScore"
|
||||||
size="small"
|
size="small"
|
||||||
style="width: 60px"
|
style="width: 60px"
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
|
</span>
|
||||||
|
<span>分</span>
|
||||||
</span>
|
</span>
|
||||||
<span>分</span>
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
<div class="score-container">
|
||||||
<div class="score-container">
|
<div
|
||||||
<div
|
v-for="(score, index) in teacherRatingList"
|
||||||
v-for="(score, index) in teacherRatingList"
|
:key="index"
|
||||||
:key="index"
|
:class="[
|
||||||
:class="[
|
'score-circle',
|
||||||
'score-circle',
|
{ active: classWorkFormScore.rating == score.ratingKey }
|
||||||
{ active: classWorkFormScore.rating == score.ratingKey }
|
]"
|
||||||
]"
|
@click="selectScore(score)"
|
||||||
@click="selectScore(score)"
|
>
|
||||||
>
|
{{ score.ratingValue }}
|
||||||
{{ score.ratingValue }}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</el-col>
|
||||||
</el-col>
|
<el-col :span="10" style="display: flex; align-items: center">
|
||||||
<el-col :span="10" style="display: flex; align-items: center">
|
<el-select
|
||||||
<el-select
|
v-model="value"
|
||||||
v-model="value"
|
placeholder="常用评语"
|
||||||
placeholder="常用评语"
|
style="width: 240px"
|
||||||
style="width: 240px"
|
@change="onSelectOption"
|
||||||
@change="onSelectOption"
|
>
|
||||||
>
|
<el-option
|
||||||
<el-option
|
v-for="item in cities"
|
||||||
v-for="item in cities"
|
:key="item.value"
|
||||||
:key="item.value"
|
:label="item.label"
|
||||||
:label="item.label"
|
:value="item.value"
|
||||||
:value="item.value"
|
/>
|
||||||
/>
|
<template #footer>
|
||||||
<template #footer>
|
<el-button v-if="!isAdding" text bg size="small" @click="onAddOption">
|
||||||
<el-button v-if="!isAdding" text bg size="small" @click="onAddOption">
|
新增常用语
|
||||||
新增常用语
|
</el-button>
|
||||||
</el-button>
|
<template v-else>
|
||||||
<template v-else>
|
<el-input
|
||||||
<el-input
|
v-model="optionName"
|
||||||
v-model="optionName"
|
class="option-input"
|
||||||
class="option-input"
|
placeholder="输入新的常用语"
|
||||||
placeholder="输入新的常用语"
|
size="small"
|
||||||
size="small"
|
/>
|
||||||
/>
|
<el-button type="primary" size="small" @click="onConfirm"> 确定 </el-button>
|
||||||
<el-button type="primary" size="small" @click="onConfirm"> 确定 </el-button>
|
<el-button size="small" @click="clear">取消</el-button>
|
||||||
<el-button size="small" @click="clear">取消</el-button>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</el-select>
|
||||||
</el-select>
|
</el-col>
|
||||||
</el-col>
|
</el-row>
|
||||||
</el-row>
|
</el-col>
|
||||||
</el-col>
|
<el-col :span="24" style="display: flex; flex-direction: column">
|
||||||
<el-col :span="24" style="display: flex; flex-direction: column">
|
<el-form-item label="评语说明">
|
||||||
<el-form-item label="评语说明">
|
<el-col :span="15" style="padding: 0px">
|
||||||
<el-col :span="15" style="padding: 0px">
|
<el-input
|
||||||
<el-input
|
v-model="classWorkFormScore.teacherremark"
|
||||||
v-model="classWorkFormScore.teacherremark"
|
type="textarea"
|
||||||
type="textarea"
|
rows="1"
|
||||||
rows="3"
|
placeholder="请输入评语说明"
|
||||||
placeholder="请输入评语说明"
|
/>
|
||||||
/>
|
</el-col>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
</el-row>
|
||||||
</el-row>
|
<div style="margin: 10px">
|
||||||
<div style="margin: 10px">
|
<el-button type="primary" @click="onClassWorkFormScoreSave">批阅确认</el-button>
|
||||||
<el-button type="primary" @click="onClassWorkFormScoreSave">批阅确认</el-button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<el-scrollbar height="500px">
|
<el-scrollbar height="500px">
|
||||||
<ul>
|
<ul>
|
||||||
<!--作业-->
|
<!--作业-->
|
||||||
<li class="flex class-item home-list" v-for="item in homeworkList" :key="item.id">
|
<li class="flex class-item home-list" v-for="item in homeworkList" :key="item.id" @click="onClickItem(item)">
|
||||||
<div class="class-left flex">
|
<div class="class-left flex">
|
||||||
<div class="class-name flex">
|
<div class="class-name flex">
|
||||||
<span class="name">{{ item.uniquekey }}</span>
|
<span class="name">{{ item.uniquekey }}</span>
|
||||||
|
@ -27,6 +27,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</div>
|
</div>
|
||||||
|
<item-dialog ref="itemDialogRef" @cle-click="closeDialog"></item-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
@ -34,13 +35,15 @@ import { ref, onMounted } from 'vue'
|
||||||
import useUserStore from '@/store/modules/user'
|
import useUserStore from '@/store/modules/user'
|
||||||
import { getSelfReserv } from '@/api/classManage'
|
import { getSelfReserv } from '@/api/classManage'
|
||||||
import { homeworklist } from '@/api/teaching/classwork'
|
import { homeworklist } from '@/api/teaching/classwork'
|
||||||
import { getCurrentTime } from '@/utils/date'
|
import { getCurrentTime, getTomorrow } from '@/utils/date'
|
||||||
|
import ItemDialog from '@/views/classTask/container/item-dialog.vue'
|
||||||
|
|
||||||
const type = ref(-1)
|
const type = ref(-1)
|
||||||
const user = useUserStore().user
|
const user = useUserStore().user
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const classList = ref([])
|
const classList = ref([])
|
||||||
const homeworkList = ref([])
|
const homeworkList = ref([])
|
||||||
|
const itemDialogRef = ref(null)
|
||||||
|
|
||||||
// 获取上课
|
// 获取上课
|
||||||
const getClass = async () => {
|
const getClass = async () => {
|
||||||
|
@ -59,15 +62,34 @@ const getHomework = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
const { edustage, edusubject } = user
|
const { edustage, edusubject } = user
|
||||||
try {
|
try {
|
||||||
const { rows } = await homeworklist({ edituserid: user.userId, edustage, edusubject, status: '1' ,orderby: 'uniquekey DESC', pageSize: 500 })
|
const { rows } = await homeworklist({ edituserid: user.userId, edustage, edusubject, deaddate: getTomorrow(), status: '1' ,orderby: 'uniquekey DESC', pageSize: 500 })
|
||||||
homeworkList.value = rows.filter(item => item.deaddate && item.uniquekey)
|
// 只展示进行中的
|
||||||
|
homeworkList.value = rows.filter(item => item.deaddate && item.uniquekey&& getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate )
|
||||||
homeworkList.value.forEach((item) => {
|
homeworkList.value.forEach((item) => {
|
||||||
item.workdatacount = JSON.parse('[' + item.classworkdatastudentids + ']').length
|
item.workdatacount = JSON.parse('[' + item.classworkdatastudentids + ']').length
|
||||||
|
// 如果是习题训练任务,则检查一共有多少道
|
||||||
|
if (item.entpcourseworklist != '') {
|
||||||
|
item.entpcourseworklistarray = JSON.parse(
|
||||||
|
'[' + item.entpcourseworklist + ']'
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
item.entpcourseworklistarray = []
|
||||||
|
}
|
||||||
})
|
})
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 批改作业
|
||||||
|
const onClickItem = (item) => {
|
||||||
|
console.log('开启弹窗')
|
||||||
|
itemDialogRef.value.openDialog(item)
|
||||||
|
}
|
||||||
|
// 批阅关闭
|
||||||
|
const closeDialog = () => {
|
||||||
|
console.log('关闭弹窗,查询一下作业数据,更新界面')
|
||||||
|
getHomework()
|
||||||
|
}
|
||||||
|
|
||||||
const tagType = (time) => {
|
const tagType = (time) => {
|
||||||
return getCurrentTime('YYYY-MM-DD HH:mm') > time ? 'info' : 'warning'
|
return getCurrentTime('YYYY-MM-DD HH:mm') > time ? 'info' : 'warning'
|
||||||
|
|
|
@ -104,12 +104,14 @@ const menuList = [{
|
||||||
{
|
{
|
||||||
name: '作业设计',
|
name: '作业设计',
|
||||||
icon: 'icon-jiaoxuefansi',
|
icon: 'icon-jiaoxuefansi',
|
||||||
disabled: true
|
isOuter: true,
|
||||||
|
path: '/teaching/classtaskassign?titleName=作业布置&&openDialog=newClassTask'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '作业布置',
|
name: '作业布置',
|
||||||
icon: 'icon-xiezuo1',
|
icon: 'icon-xiezuo1',
|
||||||
disabled: true
|
isOuter: true,
|
||||||
|
path: '/teaching/classtaskassign?titleName=作业布置'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '作业批改',
|
name: '作业批改',
|
||||||
|
|
Loading…
Reference in New Issue