1、正课与学期关系关联;

2、天假删除保护;
3、教学任务计划增加了「结束发布」。已发布或库里的「已发布」都可以结束;结束后写入结束时间,任务书和班次课程任务只读
4、班次学期操作内容调整修改;
This commit is contained in:
2026-09-14 16:30:52 +08:00
parent 30f2182453
commit 52a04dbf60
50 changed files with 2939 additions and 293 deletions
@@ -23,7 +23,7 @@
<el-form-item label="状态">
<el-select v-model="searchForm.zt" placeholder="请选择状态" clearable style="width: 140px">
<el-option
v-for="opt in statusOptions"
v-for="opt in searchStatusOptions"
:key="opt.value"
:label="opt.label"
:value="opt.value"
@@ -54,8 +54,8 @@
<el-table-column prop="nd" label="年度" width="150" align="center" />
<el-table-column label="状态" width="100" align="center">
<template slot-scope="{ row }">
<el-tag :type="row.zt === '发布' ? 'success' : 'info'" size="small">
{{ row.zt || '-' }}
<el-tag :type="taskTagType(row.zt)" size="small">
{{ taskStatusLabel(row.zt) }}
</el-tag>
</template>
</el-table-column>
@@ -63,17 +63,23 @@
<el-table-column prop="jssj" label="结束时间" width="180" align="center" :formatter="fmtDateTime" />
<el-table-column prop="cjsj" label="创建时间" width="180" align="center" :formatter="fmtDateTime" />
<el-table-column prop="jcxqscsj" label="教材需求生成时间" align="center" :formatter="fmtDateTime" />
<el-table-column label="操作" width="300" align="center" fixed="right">
<el-table-column label="操作" width="380" align="center" fixed="right">
<template slot-scope="{ row }">
<el-button type="text" size="small" @click="handleDetail(row)">详情</el-button>
<el-button type="text" size="small" @click="handleEdit(row)">编辑</el-button>
<el-button type="text" size="small" :disabled="isTaskLocked(row)" @click="handleEdit(row)">编辑</el-button>
<el-button
type="text"
size="small"
:disabled="row.zt === '发布'"
:disabled="isTaskPublished(row) || isTaskEnded(row)"
@click="handlePublish(row)"
>发布</el-button>
<el-button type="text" size="small" class="text-danger" @click="handleDelete(row)">删除</el-button>
<el-button
type="text"
size="small"
:disabled="!isTaskPublished(row)"
@click="handleEndPublish(row)"
>结束发布</el-button>
<el-button type="text" size="small" class="text-danger" :disabled="isTaskEnded(row)" @click="handleDelete(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -116,7 +122,7 @@
<el-form-item label="状态" prop="zt">
<el-select v-model="form.zt" placeholder="请选择状态" style="width: 100%">
<el-option
v-for="opt in statusOptions"
v-for="opt in formStatusOptions"
:key="opt.value"
:label="opt.label"
:value="opt.value"
@@ -197,7 +203,8 @@ import {
addTeachingTask,
updateTeachingTask,
deleteTeachingTask,
publishTeachingTask
publishTeachingTask,
endPublishTeachingTask
} from '@/api/teachBusiness/teachingTask'
import { listAllSemester } from '@/api/teachBusiness/semester'
@@ -212,7 +219,13 @@ export default {
zt: ''
},
yearOptions: [],
statusOptions: [
searchStatusOptions: [
{ label: '未发布', value: '未发布' },
{ label: '发布', value: '发布' },
{ label: '已发布', value: '已发布' },
{ label: '已结束', value: '已结束' }
],
formStatusOptions: [
{ label: '未发布', value: '未发布' },
{ label: '发布', value: '发布' }
],
@@ -425,6 +438,25 @@ export default {
}).catch(() => {})
},
isTaskPublished(row) {
return row && (row.zt === '发布' || row.zt === '已发布')
},
isTaskEnded(row) {
return row && row.zt === '已结束'
},
isTaskLocked(row) {
return this.isTaskPublished(row) || this.isTaskEnded(row)
},
taskStatusLabel(zt) {
if (zt === '已结束') return '已结束'
if (zt === '发布' || zt === '已发布') return '已发布'
return zt || '未发布'
},
taskTagType(zt) {
if (zt === '已结束') return 'warning'
if (zt === '发布' || zt === '已发布') return 'success'
return 'info'
},
/* ---------- 发布 ---------- */
handlePublish(row) {
this.$confirm(`确定要发布教学任务「${row.rwmc || row.bh || '该记录'}」吗?发布前请先填写关联的教研室任务书。`, '系统提示', {
@@ -435,6 +467,16 @@ export default {
this.$message.success('发布成功')
this.fetchList()
}).catch(() => {})
},
handleEndPublish(row) {
this.$confirm(`确定要结束发布教学任务「${row.rwmc || row.bh || '该记录'}」吗?结束后任务书和班次课程任务将只读。`, '系统提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => endPublishTeachingTask(row.bh)).then(() => {
this.$message.success('已结束发布')
this.fetchList()
}).catch(() => {})
}
}
}