教学大纲
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 专业教学计划(教学大纲 ZYJXJHB)
|
||||||
|
// 接口依据:/zyjxjhb/*(前端 baseURL 为 '/api',此处不再加前缀)
|
||||||
|
|
||||||
|
// 新增(bh 留空后端自动生成 UUID,ty 默认 0,qysj 默认当前时间)
|
||||||
|
export function addSyllabus(data) {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/add',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除(软删:置 ty=1 并写 tysj)
|
||||||
|
export function deleteSyllabus(bh) {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/delete',
|
||||||
|
method: 'post',
|
||||||
|
params: { bh }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量删除(软删)
|
||||||
|
export function batchDeleteSyllabus(bhList) {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/batchDelete',
|
||||||
|
method: 'post',
|
||||||
|
data: bhList
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新(bh 必传)
|
||||||
|
export function updateSyllabus(data) {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/update',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据编号查询
|
||||||
|
export function getSyllabus(bh) {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/get',
|
||||||
|
method: 'get',
|
||||||
|
params: { bh }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询所有(返回 List,无分页,前端本地分页)
|
||||||
|
export function listSyllabus() {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/list',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据专业代号和停用标识查询(zydh、ty 均必填,等值匹配)
|
||||||
|
export function listSyllabusByZydhAndTy(zydh, ty) {
|
||||||
|
return request({
|
||||||
|
url: '/zyjxjhb/listByZydhAndTy',
|
||||||
|
method: 'get',
|
||||||
|
params: { zydh, ty }
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -2,64 +2,28 @@
|
|||||||
<div class="app-container syllabus-page">
|
<div class="app-container syllabus-page">
|
||||||
<!-- 查询条件 -->
|
<!-- 查询条件 -->
|
||||||
<el-card shadow="never" class="search-card">
|
<el-card shadow="never" class="search-card">
|
||||||
<el-form :model="searchForm" label-width="120px" class="search-form">
|
<el-form :model="searchForm" label-width="100px" class="search-form" @submit.native.prevent>
|
||||||
<el-row :gutter="32">
|
<el-row :gutter="32">
|
||||||
<!-- 左栏 -->
|
<el-col :xs="24" :md="8">
|
||||||
<el-col :xs="24" :md="12">
|
<el-form-item label="专业代号">
|
||||||
<el-form-item label="专业名称">
|
<el-input v-model="searchForm.zydh" placeholder="请输入专业代号" clearable />
|
||||||
<el-input v-model="searchForm.zymc" placeholder="请输入专业名称" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="专业方向">
|
|
||||||
<el-input v-model="searchForm.zyfx" placeholder="请输入专业方向" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<template slot="label"><el-checkbox v-model="searchForm.pxlxEnabled">培训类型</el-checkbox></template>
|
|
||||||
<el-select v-model="searchForm.pxlx" placeholder="请选择培训类型" clearable class="w-full" :disabled="!searchForm.pxlxEnabled">
|
|
||||||
<el-option v-for="item in pxlxOptions" :key="item" :label="item" :value="item" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<template slot="label"><el-checkbox v-model="searchForm.pxccEnabled">培训层次</el-checkbox></template>
|
|
||||||
<el-select v-model="searchForm.pxcc" placeholder="请选择培训层次" clearable class="w-full" :disabled="!searchForm.pxccEnabled">
|
|
||||||
<el-option v-for="item in pxccOptions" :key="item" :label="item" :value="item" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="自定义分类">
|
|
||||||
<el-input v-model="searchForm.zdyfl" placeholder="请输入自定义分类" clearable />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :xs="24" :md="8">
|
||||||
<!-- 右栏 -->
|
<el-form-item label="停用标识">
|
||||||
<el-col :xs="24" :md="12">
|
<el-select v-model="searchForm.ty" placeholder="全部" clearable class="w-full">
|
||||||
<el-form-item label="专业代码">
|
<el-option :value="0" label="正常" />
|
||||||
<el-input v-model="searchForm.zydm" placeholder="请输入专业代码" clearable />
|
<el-option :value="1" label="停用" />
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="学年制">
|
|
||||||
<el-input v-model="searchForm.xnz" placeholder="请输入学年制" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="培训类型2">
|
|
||||||
<el-select v-model="searchForm.pxlx2" placeholder="请选择培训类型2" clearable class="w-full">
|
|
||||||
<el-option v-for="item in pxlx2Options" :key="item" :label="item" :value="item" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="启用状态">
|
|
||||||
<el-checkbox v-model="searchForm.ty">停用</el-checkbox>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="大纲版本">
|
|
||||||
<el-input v-model="searchForm.dgbb" placeholder="请输入大纲版本" clearable />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<template slot="label"><el-checkbox v-model="searchForm.gljgEnabled">管理机构</el-checkbox></template>
|
|
||||||
<el-select v-model="searchForm.gljg" placeholder="请选择管理机构" clearable class="w-full" :disabled="!searchForm.gljgEnabled">
|
|
||||||
<el-option v-for="item in gljgOptions" :key="item" :label="item" :value="item" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :xs="24" :md="8">
|
||||||
|
<div class="search-actions">
|
||||||
|
<el-button type="primary" icon="el-icon-search" @click="handleQuery">查询</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" @click="handleReset">重置</el-button>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<div class="search-footer">
|
|
||||||
<div class="notice">注意:勾选"选择框"表示启用该项对应的查询条件。</div>
|
|
||||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
@@ -67,79 +31,393 @@
|
|||||||
<el-card shadow="never" class="table-card">
|
<el-card shadow="never" class="table-card">
|
||||||
<div class="list-header">
|
<div class="list-header">
|
||||||
<div class="list-title">教学大纲列表</div>
|
<div class="list-title">教学大纲列表</div>
|
||||||
<el-button type="primary" @click="handleDownload">下载</el-button>
|
<div class="list-actions">
|
||||||
|
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
|
||||||
|
<el-button type="danger" icon="el-icon-delete" :disabled="!selection.length" @click="handleBatchDelete">删除所选</el-button>
|
||||||
|
<el-button icon="el-icon-download" @click="handleDownload">下载</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="tableData" border stripe style="width: 100%">
|
<el-table v-loading="loading" :data="pagedData" border stripe highlight-current-row
|
||||||
<el-table-column prop="jxgljg" label="教学管理机构" min-width="140" />
|
@selection-change="handleSelectionChange">
|
||||||
<el-table-column prop="xkzyxx" label="学科专业信息" min-width="140" />
|
<el-table-column type="selection" width="50" align="center" />
|
||||||
<el-table-column prop="jxdgxx" label="教学大纲信息" min-width="200" />
|
<el-table-column prop="bh" label="编号" min-width="170" show-overflow-tooltip header-align="center" />
|
||||||
<el-table-column prop="fl" label="分类" width="100" align="center" />
|
<el-table-column prop="zydh" label="专业代号" min-width="100" align="center" />
|
||||||
<el-table-column prop="xylb" label="学员类别" width="100" align="center" />
|
<el-table-column prop="kbh" label="课编号" min-width="110" show-overflow-tooltip header-align="center" />
|
||||||
<el-table-column prop="xnz" label="学年制" width="80" align="center" />
|
<el-table-column prop="jc" label="简称" min-width="100" show-overflow-tooltip header-align="center" />
|
||||||
<el-table-column prop="xsfb" label="学时分布" min-width="140" align="center" />
|
<el-table-column prop="klx" label="课类型" width="80" align="center" />
|
||||||
<el-table-column prop="zy" label="停用" width="80" align="center" />
|
<el-table-column prop="xqdc" label="学期第次" width="80" align="center" />
|
||||||
|
<el-table-column prop="xs" label="学时" width="70" align="center" />
|
||||||
|
<el-table-column prop="xf" label="学分" width="70" align="center" />
|
||||||
|
<el-table-column prop="llxs" label="理论学时" width="80" align="center" />
|
||||||
|
<el-table-column prop="sjxs" label="实践学时" width="80" align="center" />
|
||||||
|
<el-table-column prop="zks" label="周课时" width="70" align="center" />
|
||||||
|
<el-table-column prop="ksks" label="考试课时" width="80" align="center" />
|
||||||
|
<el-table-column label="大纲课程" width="90" align="center">
|
||||||
|
<template slot-scope="scope">{{ fmtYesNo(scope.row.dgkc) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="停用" width="80" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag :type="Number(scope.row.ty) === 1 ? 'danger' : 'success'" size="mini">
|
||||||
|
{{ Number(scope.row.ty) === 1 ? '停用' : '正常' }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="启用时间" width="150" align="center">
|
||||||
|
<template slot-scope="scope">{{ fmtDateTime(scope.row.qysj) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="停用时间" width="150" align="center">
|
||||||
|
<template slot-scope="scope">{{ fmtDateTime(scope.row.tysj) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="140" align="center" fixed="right">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="text" size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)">编辑</el-button>
|
||||||
|
<el-button type="text" size="mini" icon="el-icon-delete" class="danger-text-btn" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
class="pagination"
|
||||||
|
background
|
||||||
|
layout="total, sizes, prev, pager, next"
|
||||||
|
:current-page="pageNum"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handlePageChange"
|
||||||
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
<!-- 新增/编辑弹窗 -->
|
||||||
|
<el-dialog :title="dialog.title" :visible.sync="dialog.visible" width="720px" append-to-body
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="syllabusForm" :model="dialog.form" :rules="rules" label-width="130px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="专业代号" prop="zydh">
|
||||||
|
<el-input v-model="dialog.form.zydh" placeholder="请输入专业代号" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="课编号" prop="kbh">
|
||||||
|
<el-input v-model="dialog.form.kbh" placeholder="请输入课编号" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="学期第次" prop="xqdc">
|
||||||
|
<el-input-number v-model="dialog.form.xqdc" :min="1" :max="20" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="课类型" prop="klx">
|
||||||
|
<el-input v-model="dialog.form.klx" placeholder="请输入课类型" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="学时" prop="xs">
|
||||||
|
<el-input-number v-model="dialog.form.xs" :min="0" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="停用" prop="ty">
|
||||||
|
<el-select v-model="dialog.form.ty" class="w-full">
|
||||||
|
<el-option :value="0" label="正常" />
|
||||||
|
<el-option :value="1" label="停用" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="简称">
|
||||||
|
<el-input v-model="dialog.form.jc" placeholder="请输入课程简称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="学分">
|
||||||
|
<el-input-number v-model="dialog.form.xf" :min="0" :step="0.5" :precision="1" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="课程定位">
|
||||||
|
<el-input v-model="dialog.form.kcdw" placeholder="请输入课程定位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="模块">
|
||||||
|
<el-input v-model="dialog.form.mk" placeholder="请输入模块" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="成绩分制">
|
||||||
|
<el-input v-model="dialog.form.cjfz" placeholder="请输入成绩分制" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="教研室代号">
|
||||||
|
<el-input v-model="dialog.form.jysdh" placeholder="请输入教研室代号" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="考试课时">
|
||||||
|
<el-input-number v-model="dialog.form.ksks" :min="0" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="理论学时">
|
||||||
|
<el-input-number v-model="dialog.form.llxs" :min="0" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="实践学时">
|
||||||
|
<el-input-number v-model="dialog.form.sjxs" :min="0" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="周课时">
|
||||||
|
<el-input-number v-model="dialog.form.zks" :min="0" controls-position="right" class="w-full" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="不计入平均分">
|
||||||
|
<el-radio-group v-model="dialog.form.bjrxypjf">
|
||||||
|
<el-radio :label="0">否</el-radio>
|
||||||
|
<el-radio :label="1">是</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="考试课时不显示">
|
||||||
|
<el-radio-group v-model="dialog.form.ksksbxs">
|
||||||
|
<el-radio :label="0">否</el-radio>
|
||||||
|
<el-radio :label="1">是</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="大纲课程">
|
||||||
|
<el-radio-group v-model="dialog.form.dgkc">
|
||||||
|
<el-radio :label="0">否</el-radio>
|
||||||
|
<el-radio :label="1">是</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialog.visible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" :loading="dialog.submitting" @click="submitDialog">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// 模拟列表数据(后端接口未提供,接口就绪后可删除并改为接口加载)
|
import {
|
||||||
const mockTableData = [
|
addSyllabus,
|
||||||
{ jxgljg: '教务处', xkzyxx: '通信工程', jxdgxx: '通信工程导论教学大纲', fl: '专业基础', xylb: '军官', xnz: '4', xsfb: '理论48/实践16', zy: '教学' },
|
deleteSyllabus,
|
||||||
{ jxgljg: '教务处', xkzyxx: '信息工程', jxdgxx: '信息工程基础教学大纲', fl: '专业基础', xylb: '军官', xnz: '4', xsfb: '理论64/实践32', zy: '教学' }
|
batchDeleteSyllabus,
|
||||||
]
|
updateSyllabus,
|
||||||
|
listSyllabus,
|
||||||
|
listSyllabusByZydhAndTy
|
||||||
|
} from '@/api/teachBusiness/syllabus'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SyllabusIndex',
|
name: 'SyllabusIndex',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// ==================== 查询表单 ====================
|
loading: false,
|
||||||
searchForm: {
|
searchForm: {
|
||||||
zymc: '',
|
zydh: '',
|
||||||
zydm: '',
|
ty: ''
|
||||||
zyfx: '',
|
|
||||||
xnz: '',
|
|
||||||
pxlx: '军官基础教育', pxlxEnabled: false,
|
|
||||||
pxlx2: '其他',
|
|
||||||
pxcc: '无', pxccEnabled: false,
|
|
||||||
ty: false,
|
|
||||||
zdyfl: '',
|
|
||||||
dgbb: '',
|
|
||||||
gljg: '教务处', gljgEnabled: false
|
|
||||||
},
|
},
|
||||||
|
tableData: [],
|
||||||
// ==================== 下拉选项(字典数据,接口就绪后可由后端字典加载) ====================
|
total: 0,
|
||||||
pxlxOptions: ['军官基础教育', '士兵职业教育', '研究生教育', '其他'],
|
pageNum: 1,
|
||||||
pxlx2Options: ['军官基础教育', '其他', '任职培训', '研究生教育'],
|
pageSize: 20,
|
||||||
pxccOptions: ['无', '本科', '硕士', '博士'],
|
selection: [],
|
||||||
gljgOptions: ['教务处', '教研室1', '教研室2', '学员队'],
|
dialog: {
|
||||||
|
visible: false,
|
||||||
// ==================== 表格数据 ====================
|
title: '',
|
||||||
tableData: []
|
submitting: false,
|
||||||
|
form: this.createEmptyForm()
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
zydh: [{ required: true, message: '请输入专业代号', trigger: 'blur' }],
|
||||||
|
kbh: [{ required: true, message: '请输入课编号', trigger: 'blur' }],
|
||||||
|
xqdc: [{ required: true, message: '请输入学期第次', trigger: 'blur' }],
|
||||||
|
klx: [{ required: true, message: '请输入课类型', trigger: 'blur' }],
|
||||||
|
xs: [{ required: true, message: '请输入学时', trigger: 'blur' }],
|
||||||
|
ty: [{ required: true, message: '请选择停用标识', trigger: 'change' }]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
computed: {
|
||||||
|
pagedData() {
|
||||||
|
const start = (this.pageNum - 1) * this.pageSize
|
||||||
|
return this.tableData.slice(start, start + this.pageSize)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
this.fetchList()
|
this.fetchList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// ==================== 列表加载 ====================
|
/* ---------- 列表加载 ---------- */
|
||||||
// TODO: 后端接口未提供,暂用模拟数据;接口就绪后替换为 getSyllabusList
|
|
||||||
fetchList() {
|
fetchList() {
|
||||||
this.tableData = mockTableData.slice()
|
this.loading = true
|
||||||
|
const { zydh, ty } = this.searchForm
|
||||||
|
// 专业代号与停用标识同时给出时走后端 /listByZydhAndTy;否则查全部后本地过滤
|
||||||
|
const useApiQuery = zydh && ty !== '' && ty !== null && ty !== undefined
|
||||||
|
const req = useApiQuery
|
||||||
|
? listSyllabusByZydhAndTy(zydh, ty)
|
||||||
|
: listSyllabus()
|
||||||
|
req.then(response => {
|
||||||
|
let list = response.data || []
|
||||||
|
if (!useApiQuery) {
|
||||||
|
if (zydh) list = list.filter(i => i.zydh && i.zydh.indexOf(zydh) !== -1)
|
||||||
|
if (ty !== '' && ty !== null && ty !== undefined) {
|
||||||
|
list = list.filter(i => Number(i.ty) === Number(ty))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.tableData = list
|
||||||
|
this.total = list.length
|
||||||
|
this.pageNum = 1
|
||||||
|
}).catch(() => {
|
||||||
|
this.tableData = []
|
||||||
|
this.total = 0
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 查询 ====================
|
|
||||||
// TODO: 后端接口未提供,查询为前端模拟;接口就绪后替换为后端查询
|
|
||||||
handleQuery() {
|
handleQuery() {
|
||||||
this.fetchList()
|
this.fetchList()
|
||||||
this.$message.success('查询教学大纲(前端模拟)')
|
},
|
||||||
|
handleReset() {
|
||||||
|
this.searchForm = { zydh: '', ty: '' }
|
||||||
|
this.fetchList()
|
||||||
|
},
|
||||||
|
handleSelectionChange(val) {
|
||||||
|
this.selection = val
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 下载 ====================
|
/* ---------- 新增 / 编辑 ---------- */
|
||||||
// TODO: 后端接口未提供,下载为前端模拟;接口就绪后替换为 downloadSyllabusList
|
handleAdd() {
|
||||||
|
this.dialog.title = '新增教学大纲'
|
||||||
|
this.dialog.form = this.createEmptyForm()
|
||||||
|
this.dialog.visible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.syllabusForm) this.$refs.syllabusForm.clearValidate()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleEdit(row) {
|
||||||
|
this.dialog.title = '编辑教学大纲'
|
||||||
|
this.dialog.form = Object.assign({}, this.createEmptyForm(), row)
|
||||||
|
this.dialog.visible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.syllabusForm) this.$refs.syllabusForm.clearValidate()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submitDialog() {
|
||||||
|
this.$refs.syllabusForm.validate(valid => {
|
||||||
|
if (!valid) return
|
||||||
|
this.dialog.submitting = true
|
||||||
|
const payload = this.cleanPayload(this.dialog.form)
|
||||||
|
const isEdit = !!payload.bh
|
||||||
|
const req = isEdit ? updateSyllabus(payload) : addSyllabus(payload)
|
||||||
|
req.then(() => {
|
||||||
|
this.$message.success(isEdit ? '修改成功' : '新增成功')
|
||||||
|
this.dialog.visible = false
|
||||||
|
this.fetchList()
|
||||||
|
}).finally(() => {
|
||||||
|
this.dialog.submitting = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/* ---------- 删除 / 批量删除 ---------- */
|
||||||
|
handleDelete(row) {
|
||||||
|
this.$confirm('删除后该条记录将置为「停用」,是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
return deleteSyllabus(row.bh)
|
||||||
|
}).then(() => {
|
||||||
|
this.$message.success('删除成功')
|
||||||
|
this.fetchList()
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
handleBatchDelete() {
|
||||||
|
if (!this.selection.length) {
|
||||||
|
this.$message.warning('请先勾选要删除的记录')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const bhList = this.selection.map(row => row.bh)
|
||||||
|
this.$confirm('确定删除所选 ' + bhList.length + ' 条记录吗?(将置为「停用」)', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
return batchDeleteSyllabus(bhList)
|
||||||
|
}).then(() => {
|
||||||
|
this.$message.success('批量删除成功')
|
||||||
|
this.fetchList()
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
|
||||||
|
/* ---------- 下载(无后端接口) ---------- */
|
||||||
handleDownload() {
|
handleDownload() {
|
||||||
this.$message.success('下载教学大纲列表(前端模拟)')
|
this.$message.warning('后端暂未提供该接口')
|
||||||
|
},
|
||||||
|
|
||||||
|
/* ---------- 分页 ---------- */
|
||||||
|
handleSizeChange(size) {
|
||||||
|
this.pageSize = size
|
||||||
|
this.pageNum = 1
|
||||||
|
},
|
||||||
|
handlePageChange(page) {
|
||||||
|
this.pageNum = page
|
||||||
|
},
|
||||||
|
|
||||||
|
/* ---------- 工具 ---------- */
|
||||||
|
createEmptyForm() {
|
||||||
|
return {
|
||||||
|
bh: '',
|
||||||
|
zydh: '',
|
||||||
|
kbh: '',
|
||||||
|
xqdc: 1,
|
||||||
|
klx: '',
|
||||||
|
xs: 0,
|
||||||
|
ty: 0,
|
||||||
|
jc: '',
|
||||||
|
xf: null,
|
||||||
|
kcdw: '',
|
||||||
|
ksks: 0,
|
||||||
|
mk: '',
|
||||||
|
cjfz: '',
|
||||||
|
bjrxypjf: 0,
|
||||||
|
llxs: 0,
|
||||||
|
sjxs: 0,
|
||||||
|
zks: 0,
|
||||||
|
ksksbxs: 0,
|
||||||
|
dgkc: 0,
|
||||||
|
jysdh: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/** 移除空值(''/null/undefined),保留 0 等有效值 */
|
||||||
|
cleanPayload(obj) {
|
||||||
|
const payload = {}
|
||||||
|
Object.keys(obj).forEach(key => {
|
||||||
|
const value = obj[key]
|
||||||
|
if (value !== '' && value !== null && value !== undefined) {
|
||||||
|
payload[key] = value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return payload
|
||||||
|
},
|
||||||
|
fmtYesNo(val) {
|
||||||
|
return Number(val) === 1 ? '是' : '否'
|
||||||
|
},
|
||||||
|
fmtDateTime(val) {
|
||||||
|
return (val || '').substring(0, 16) || '-'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -159,23 +437,8 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-form-item__label {
|
.search-actions {
|
||||||
text-align: left;
|
padding-top: 4px;
|
||||||
justify-content: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-footer {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-top: 8px;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 12px;
|
|
||||||
|
|
||||||
.notice {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #f56c6c;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,6 +456,19 @@ export default {
|
|||||||
color: #303133;
|
color: #303133;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
margin-top: 16px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.danger-text-btn {
|
||||||
|
color: #f56c6c;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #f78989;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user