<template>
|
<div class="training-management">
|
<!-- 页面头部 -->
|
<div class="page-header">
|
<div class="header-actions">
|
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">
|
新增进修记录
|
</el-button>
|
<el-button icon="el-icon-download" @click="exportData">
|
导出数据
|
</el-button>
|
</div>
|
</div>
|
|
<!-- 搜索筛选区域 -->
|
<el-card class="filter-card">
|
<el-form :model="queryParams" inline>
|
<el-form-item label="姓名">
|
<el-input
|
v-model="queryParams.name"
|
placeholder="请输入姓名"
|
clearable
|
style="width: 120px"
|
/>
|
</el-form-item>
|
<el-form-item label="进修类型">
|
<el-select v-model="queryParams.trainingType" clearable placeholder="请选择">
|
<el-option label="专业技术进修" value="professional" />
|
<el-option label="管理能力进修" value="management" />
|
<el-option label="学历提升进修" value="education" />
|
<el-option label="技能培训" value="skill" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="技术职称">
|
<el-input
|
v-model="queryParams.technicalTitle"
|
placeholder="请输入技术职称"
|
clearable
|
style="width: 140px"
|
/>
|
</el-form-item>
|
<el-form-item label="进修时间">
|
<el-date-picker
|
v-model="queryParams.dateRange"
|
type="daterange"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
value-format="yyyy-MM-dd"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
<el-button @click="handleReset">重置</el-button>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
|
<!-- 数据表格 -->
|
<el-card>
|
<el-table
|
:data="tableData"
|
v-loading="loading"
|
border
|
style="width: 100%"
|
@sort-change="handleSortChange"
|
>
|
<el-table-column prop="id" label="ID" width="80" fixed />
|
<el-table-column prop="name" label="姓名" width="100" fixed>
|
<template #default="scope">
|
<el-button type="text" @click="handleView(scope.row.id)">
|
{{ scope.row.name }}
|
</el-button>
|
</template>
|
</el-table-column>
|
<el-table-column prop="sex" label="性别" width="80">
|
<template #default="scope">
|
<el-tag :type="scope.row.sex === '男' ? 'primary' : 'danger'" size="small">
|
{{ scope.row.sex }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="age" label="年龄" width="80" sortable />
|
<el-table-column prop="education" label="学历" width="100" />
|
<el-table-column prop="trainingType" label="进修类型" width="120">
|
<template #default="scope">
|
<el-tag :type="getTrainingTypeTag(scope.row.trainingType)">
|
{{ getTrainingTypeText(scope.row.trainingType) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="trainingStartDate" label="进修开始时间" width="120">
|
<template #default="scope">
|
{{ formatDate(scope.row.trainingStartDate) }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="trainingEndDate" label="进修结束时间" width="120">
|
<template #default="scope">
|
{{ formatDate(scope.row.trainingEndDate) }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="trainingMajor" label="进修专业" width="120" />
|
<el-table-column prop="idCard" label="身份证号" width="180" show-overflow-tooltip />
|
<el-table-column prop="technicalTitle" label="技术职称" width="120" />
|
<el-table-column prop="profession" label="从事专业" width="120" />
|
<el-table-column prop="workYears" label="工作年限" width="100" sortable />
|
<el-table-column prop="graduationSchool" label="毕业院校" width="150" show-overflow-tooltip />
|
<el-table-column prop="workUnit" label="所在单位" width="150" show-overflow-tooltip />
|
|
<el-table-column prop="recordStatus" label="状态" width="100" fixed="right">
|
<template #default="scope">
|
<el-tag :type="getStatusTag(scope.row.recordStatus)">
|
{{ scope.row.recordStatus || '进行中' }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" width="180" fixed="right">
|
<template #default="scope">
|
<el-button size="mini" type="text" @click="handleView(scope.row.id)">
|
查看
|
</el-button>
|
<el-button size="mini" type="text" @click="handleEdit(scope.row.id)">
|
编辑
|
</el-button>
|
<el-button
|
size="mini"
|
type="text"
|
@click="handleCopy(scope.row.id)"
|
style="color: #67C23A;"
|
>
|
复制
|
</el-button>
|
<el-button
|
size="mini"
|
type="text"
|
@click="handleDelete(scope.row)"
|
style="color: #F56C6C;"
|
>
|
删除
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<!-- 分页 -->
|
<div class="pagination-container">
|
<el-pagination
|
:current-page="pagination.pageNum"
|
:page-size="pagination.pageSize"
|
:total="pagination.total"
|
layout="total, sizes, prev, pager, next, jumper"
|
:page-sizes="[10, 20, 50, 100]"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
</el-card>
|
|
<!-- 查看详情对话框 -->
|
<el-dialog
|
:title="`进修详情 - ${currentRecord.name || ''}`"
|
:visible.sync="detailDialogVisible"
|
width="900px"
|
:before-close="handleDetailClose"
|
>
|
<el-descriptions :column="2" border v-if="currentRecord.id">
|
<el-descriptions-item label="姓名">{{ currentRecord.name }}</el-descriptions-item>
|
<el-descriptions-item label="性别">{{ currentRecord.sex }}</el-descriptions-item>
|
<el-descriptions-item label="年龄">{{ currentRecord.age }}</el-descriptions-item>
|
<el-descriptions-item label="学历">{{ currentRecord.education }}</el-descriptions-item>
|
<el-descriptions-item label="进修类型">
|
<el-tag :type="getTrainingTypeTag(currentRecord.trainingType)">
|
{{ getTrainingTypeText(currentRecord.trainingType) }}
|
</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item label="身份证号">{{ currentRecord.idCard }}</el-descriptions-item>
|
<el-descriptions-item label="毕业院校">{{ currentRecord.graduationSchool }}</el-descriptions-item>
|
<el-descriptions-item label="所在单位">{{ currentRecord.workUnit }}</el-descriptions-item>
|
<el-descriptions-item label="技术职称">{{ currentRecord.technicalTitle }}</el-descriptions-item>
|
<el-descriptions-item label="从事专业">{{ currentRecord.profession }}</el-descriptions-item>
|
<el-descriptions-item label="工作年限">{{ currentRecord.workYears }}年</el-descriptions-item>
|
<el-descriptions-item label="进修目标">{{ currentRecord.trainingGoal }}</el-descriptions-item>
|
<el-descriptions-item label="进修开始时间">{{ formatDate(currentRecord.trainingStartDate) }}</el-descriptions-item>
|
<el-descriptions-item label="进修结束时间">{{ formatDate(currentRecord.trainingEndDate) }}</el-descriptions-item>
|
<el-descriptions-item label="进修专业">{{ currentRecord.trainingMajor }}</el-descriptions-item>
|
<el-descriptions-item label="从事工作情况" :span="2">
|
{{ currentRecord.workSituation }}
|
</el-descriptions-item>
|
<el-descriptions-item label="进修科目" :span="2">
|
{{ currentRecord.applySubject }}
|
</el-descriptions-item>
|
<el-descriptions-item label="进修目的" :span="2">
|
{{ currentRecord.applyPurpose }}
|
</el-descriptions-item>
|
<el-descriptions-item label="主要学历" :span="2">
|
<div style="white-space: pre-line;">{{ currentRecord.mainEducation }}</div>
|
</el-descriptions-item>
|
<el-descriptions-item label="主要工作经历" :span="2">
|
<div style="white-space: pre-line;">{{ currentRecord.mainExperience }}</div>
|
</el-descriptions-item>
|
<el-descriptions-item label="创建时间">{{ formatDateTime(currentRecord.createTime) }}</el-descriptions-item>
|
<el-descriptions-item label="更新时间">{{ formatDateTime(currentRecord.updateTime) }}</el-descriptions-item>
|
<!-- <el-descriptions-item label="备注" :span="2">{{ currentRecord.remark }}</el-descriptions-item> -->
|
</el-descriptions>
|
<span slot="footer">
|
<el-button @click="detailDialogVisible = false">关闭</el-button>
|
<el-button type="primary" @click="handleEdit(currentRecord.id)">编辑</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 新增/编辑对话框 -->
|
<el-dialog
|
:title="`${isEditing ? '编辑' : '新增'}进修记录`"
|
:visible.sync="editDialogVisible"
|
width="80vw"
|
:before-close="handleEditClose"
|
>
|
<el-form
|
ref="editForm"
|
:model="editForm"
|
:rules="editRules"
|
label-width="120px"
|
label-position="left"
|
>
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="姓名" prop="name">
|
<el-input v-model="editForm.name" placeholder="请输入姓名" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="性别" prop="sex">
|
<el-radio-group v-model="editForm.sex">
|
<el-radio label="男">男</el-radio>
|
<el-radio label="女">女</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="年龄" prop="age">
|
<el-input-number
|
v-model="editForm.age"
|
:min="18"
|
:max="65"
|
controls-position="right"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="学历" prop="education">
|
<el-select v-model="editForm.education" placeholder="请选择学历" style="width: 100%">
|
<el-option label="博士" value="博士" />
|
<el-option label="硕士" value="硕士" />
|
<el-option label="本科" value="本科" />
|
<el-option label="大专" value="大专" />
|
<el-option label="中专" value="中专" />
|
<el-option label="高中" value="高中" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-form-item label="进修类型" prop="trainingType">
|
<el-select v-model="editForm.trainingType" placeholder="请选择进修类型" style="width: 100%">
|
<el-option label="专业技术进修" value="professional" />
|
<el-option label="管理能力进修" value="management" />
|
<el-option label="学历提升进修" value="education" />
|
<el-option label="技能培训" value="skill" />
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="身份证号" prop="idCard">
|
<el-input v-model="editForm.idCard" placeholder="请输入身份证号" />
|
</el-form-item>
|
|
<el-form-item label="毕业院校" prop="graduationSchool">
|
<el-input v-model="editForm.graduationSchool" placeholder="请输入毕业院校" />
|
</el-form-item>
|
|
<el-form-item label="所在单位" prop="workUnit">
|
<el-input v-model="editForm.workUnit" placeholder="请输入所在单位" />
|
</el-form-item>
|
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="技术职称" prop="technicalTitle">
|
<el-input v-model="editForm.technicalTitle" placeholder="请输入技术职称" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="从事专业" prop="profession">
|
<el-input v-model="editForm.profession" placeholder="请输入从事专业" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-form-item label="工作年限" prop="workYears">
|
<el-input-number
|
v-model="editForm.workYears"
|
:min="0"
|
:max="50"
|
:precision="1"
|
:step="0.5"
|
controls-position="right"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
|
<el-form-item label="进修目标" prop="trainingGoal">
|
<el-input
|
v-model="editForm.trainingGoal"
|
type="textarea"
|
:rows="2"
|
placeholder="请输入进修目标"
|
/>
|
</el-form-item>
|
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="进修开始时间" prop="trainingStartDate">
|
<el-date-picker
|
v-model="editForm.trainingStartDate"
|
type="date"
|
placeholder="选择开始日期"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="进修结束时间" prop="trainingEndDate">
|
<el-date-picker
|
v-model="editForm.trainingEndDate"
|
type="date"
|
placeholder="选择结束日期"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-form-item label="进修专业" prop="trainingMajor">
|
<el-input v-model="editForm.trainingMajor" placeholder="请输入进修专业" />
|
</el-form-item>
|
|
<el-form-item label="进修科目" prop="applySubject">
|
<el-input
|
v-model="editForm.applySubject"
|
type="textarea"
|
:rows="2"
|
placeholder="请输入本次申请进修科目"
|
/>
|
</el-form-item>
|
|
<el-form-item label="进修目的" prop="applyPurpose">
|
<el-input
|
v-model="editForm.applyPurpose"
|
type="textarea"
|
:rows="2"
|
placeholder="请输入进修目的要求"
|
/>
|
</el-form-item>
|
|
<el-form-item label="从事工作情况" prop="workSituation">
|
<el-input
|
v-model="editForm.workSituation"
|
type="textarea"
|
:rows="3"
|
placeholder="请输入从事工作情况"
|
/>
|
</el-form-item>
|
|
<el-form-item label="主要学历" prop="mainEducation">
|
<el-input
|
v-model="editForm.mainEducation"
|
type="textarea"
|
:rows="3"
|
placeholder="请输入主要学历(每行一条)"
|
/>
|
</el-form-item>
|
|
<el-form-item label="主要工作经历" prop="mainExperience">
|
<el-input
|
v-model="editForm.mainExperience"
|
type="textarea"
|
:rows="3"
|
placeholder="请输入主要工作经历(每行一条)"
|
/>
|
</el-form-item>
|
|
<!-- <el-form-item label="备注" prop="remark">
|
<el-input
|
v-model="editForm.remark"
|
type="textarea"
|
:rows="2"
|
placeholder="请输入备注信息"
|
/>
|
</el-form-item> -->
|
</el-form>
|
|
<span slot="footer">
|
<el-button @click="handleEditClose">取消</el-button>
|
<el-button type="primary" @click="handleSave" :loading="saveLoading">
|
{{ isEditing ? '保存' : '新增' }}
|
</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import { recordslist, recordsedit, recordsadd, recordsInfo, recordsDel,exporrecords } from "@/api/officeManagementApi";
|
|
export default {
|
name: 'TrainingManagement',
|
data() {
|
return {
|
// 查询参数
|
queryParams: {
|
name: '',
|
trainingType: '',
|
technicalTitle: '',
|
dateRange: []
|
},
|
// 分页参数
|
pagination: {
|
pageNum: 1,
|
pageSize: 10,
|
total: 0
|
},
|
// 加载状态
|
loading: false,
|
saveLoading: false,
|
// 对话框显示状态
|
detailDialogVisible: false,
|
editDialogVisible: false,
|
// 当前操作记录
|
currentRecord: {},
|
// 编辑状态
|
isEditing: false,
|
// 表格数据
|
tableData: [],
|
// 编辑表单数据
|
editForm: this.getDefaultFormData(),
|
// 表单验证规则
|
editRules: {
|
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
|
sex: [{ required: true, message: '请选择性别', trigger: 'change' }],
|
age: [{ required: true, message: '请输入年龄', trigger: 'blur' }],
|
education: [{ required: true, message: '请选择学历', trigger: 'change' }],
|
trainingType: [{ required: true, message: '请选择进修类型', trigger: 'change' }],
|
idCard: [
|
{ required: true, message: '请输入身份证号', trigger: 'blur' },
|
{ pattern: /^\d{17}[\dXx]$/, message: '请输入正确的身份证号', trigger: 'blur' }
|
],
|
trainingStartDate: [{ required: true, message: '请选择进修开始时间', trigger: 'change' }],
|
trainingEndDate: [{ required: true, message: '请选择进修结束时间', trigger: 'change' }]
|
}
|
}
|
},
|
mounted() {
|
this.loadData()
|
},
|
methods: {
|
// 加载数据
|
async loadData() {
|
this.loading = true
|
try {
|
const params = {
|
pageNum: this.pagination.pageNum,
|
pageSize: this.pagination.pageSize,
|
...this.queryParams
|
}
|
|
// 处理时间范围查询
|
if (this.queryParams.dateRange && this.queryParams.dateRange.length === 2) {
|
params.startDate = this.queryParams.dateRange[0]
|
params.endDate = this.queryParams.dateRange[1]
|
}
|
|
const response = await recordslist(params)
|
|
if (response.code === 200) {
|
this.tableData = response.rows || []
|
this.pagination.total = response.total || 0
|
} else {
|
this.$message.error(response.msg || '获取数据失败')
|
}
|
} catch (error) {
|
console.error('加载数据失败:', error)
|
this.$message.error('数据加载失败')
|
} finally {
|
this.loading = false
|
}
|
},
|
|
// 获取进修类型标签样式
|
getTrainingTypeTag(type) {
|
const typeMap = {
|
professional: 'primary',
|
management: 'success',
|
education: 'warning',
|
skill: 'info'
|
}
|
return typeMap[type] || 'info'
|
},
|
|
// 获取进修类型文本
|
getTrainingTypeText(type) {
|
const textMap = {
|
professional: '专业技术进修',
|
management: '管理能力进修',
|
education: '学历提升进修',
|
skill: '技能培训'
|
}
|
return textMap[type] || type
|
},
|
|
// 获取状态标签样式
|
getStatusTag(status) {
|
const statusMap = {
|
'进行中': 'primary',
|
'已完成': 'success',
|
'待审核': 'warning',
|
'已取消': 'danger',
|
'正常': 'success',
|
'删除': 'danger'
|
}
|
return statusMap[status] || 'info'
|
},
|
|
// 格式化日期
|
formatDate(date) {
|
if (!date) return ''
|
return date.split(' ')[0]
|
},
|
|
// 格式化日期时间
|
formatDateTime(dateTime) {
|
if (!dateTime) return ''
|
return dateTime.replace('T', ' ')
|
},
|
|
// 查询处理
|
handleQuery() {
|
this.pagination.pageNum = 1
|
this.loadData()
|
},
|
|
// 重置查询
|
handleReset() {
|
this.queryParams = {
|
name: '',
|
trainingType: '',
|
technicalTitle: '',
|
dateRange: []
|
}
|
this.pagination.pageNum = 1
|
this.loadData()
|
},
|
|
// 查看详情
|
async handleView(id) {
|
try {
|
const response = await recordsInfo(id)
|
if (response.code === 200) {
|
this.currentRecord = response.data || {}
|
this.detailDialogVisible = true
|
} else {
|
this.$message.error(response.msg || '获取详情失败')
|
}
|
} catch (error) {
|
console.error('获取详情失败:', error)
|
this.$message.error('获取详情失败')
|
}
|
},
|
|
// 新增记录
|
handleAdd() {
|
this.isEditing = false
|
this.editForm = this.getDefaultFormData()
|
this.editDialogVisible = true
|
this.$nextTick(() => {
|
this.$refs.editForm && this.$refs.editForm.clearValidate()
|
})
|
},
|
|
// 编辑记录
|
async handleEdit(id) {
|
try {
|
const response = await recordsInfo(id)
|
if (response.code === 200) {
|
this.isEditing = true
|
this.currentRecord = response.data || {}
|
this.editForm = { ...response.data }
|
this.editDialogVisible = true
|
this.detailDialogVisible = false
|
this.$nextTick(() => {
|
this.$refs.editForm && this.$refs.editForm.clearValidate()
|
})
|
} else {
|
this.$message.error(response.msg || '获取记录失败')
|
}
|
} catch (error) {
|
console.error('获取记录失败:', error)
|
this.$message.error('获取记录失败')
|
}
|
},
|
|
// 复制记录
|
async handleCopy(id) {
|
try {
|
const response = await recordsInfo(id)
|
if (response.code === 200) {
|
this.isEditing = false
|
const copiedRecord = { ...response.data }
|
delete copiedRecord.id
|
copiedRecord.name = copiedRecord.name + '(复制)'
|
copiedRecord.isCopy = 1
|
copiedRecord.originalId = id
|
this.editForm = copiedRecord
|
this.editDialogVisible = true
|
this.$nextTick(() => {
|
this.$refs.editForm && this.$refs.editForm.clearValidate()
|
})
|
} else {
|
this.$message.error(response.msg || '获取记录失败')
|
}
|
} catch (error) {
|
console.error('获取记录失败:', error)
|
this.$message.error('获取记录失败')
|
}
|
},
|
|
// 保存记录
|
async handleSave() {
|
try {
|
const valid = await this.$refs.editForm.validate()
|
if (!valid) return
|
|
this.saveLoading = true
|
|
// 验证结束时间不能早于开始时间
|
if (this.editForm.trainingStartDate && this.editForm.trainingEndDate) {
|
if (this.editForm.trainingEndDate < this.editForm.trainingStartDate) {
|
this.$message.error('结束时间不能早于开始时间')
|
this.saveLoading = false
|
return
|
}
|
}
|
|
let response
|
if (this.isEditing) {
|
// 编辑
|
response = await recordsedit(this.editForm)
|
} else {
|
// 新增
|
response = await recordsadd(this.editForm)
|
}
|
|
if (response.code === 200) {
|
this.$message.success(this.isEditing ? '保存成功' : '新增成功')
|
this.editDialogVisible = false
|
this.loadData()
|
} else {
|
this.$message.error(response.msg || (this.isEditing ? '保存失败' : '新增失败'))
|
}
|
} catch (error) {
|
console.error('保存失败:', error)
|
this.$message.error(this.isEditing ? '保存失败' : '新增失败')
|
} finally {
|
this.saveLoading = false
|
}
|
},
|
|
// 删除记录
|
async handleDelete(row) {
|
try {
|
await this.$confirm('确定要删除这条记录吗?', '提示', {
|
type: 'warning',
|
confirmButtonText: '确定',
|
cancelButtonText: '取消'
|
})
|
|
const response = await recordsDel(row.id)
|
if (response.code === 200) {
|
this.$message.success('删除成功')
|
this.loadData()
|
} else {
|
this.$message.error(response.msg || '删除失败')
|
}
|
} catch (error) {
|
if (error !== 'cancel') {
|
console.error('删除失败:', error)
|
this.$message.error('删除失败')
|
}
|
}
|
},
|
|
// 关闭详情对话框
|
handleDetailClose() {
|
this.detailDialogVisible = false
|
this.currentRecord = {}
|
},
|
|
// 关闭编辑对话框
|
handleEditClose() {
|
this.editDialogVisible = false
|
this.currentRecord = {}
|
this.editForm = this.getDefaultFormData()
|
this.$nextTick(() => {
|
this.$refs.editForm && this.$refs.editForm.clearValidate()
|
})
|
},
|
|
// 导出数据
|
exportData() {
|
const queryParams = this.queryParams;
|
this.$modal
|
.confirm("是否确认导出所有进修管理数据项?")
|
.then(() => {
|
return exporrecords(queryParams);
|
})
|
.then((response) => {
|
this.$download.name(response.msg);
|
})
|
.catch(() => { });
|
},
|
|
// 分页大小变化
|
handleSizeChange(size) {
|
this.pagination.pageSize = size
|
this.pagination.pageNum = 1
|
this.loadData()
|
},
|
|
// 当前页变化
|
handleCurrentChange(page) {
|
this.pagination.pageNum = page
|
this.loadData()
|
},
|
|
// 排序变化
|
handleSortChange(sort) {
|
console.log('排序变化:', sort)
|
// 这里可以添加排序逻辑,如果需要的话
|
},
|
|
// 获取默认表单数据
|
getDefaultFormData() {
|
return {
|
id: null,
|
name: '',
|
sex: '男',
|
age: 25,
|
education: '',
|
trainingType: '',
|
idCard: '',
|
graduationSchool: '',
|
workUnit: '',
|
technicalTitle: '',
|
profession: '',
|
workYears: 0,
|
trainingGoal: '',
|
trainingStartDate: '',
|
trainingEndDate: '',
|
trainingMajor: '',
|
workSituation: '',
|
applySubject: '',
|
applyPurpose: '',
|
mainEducation: '',
|
mainExperience: '',
|
remark: '',
|
isCopy: 0,
|
originalId: null
|
}
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
.training-management {
|
padding: 20px;
|
}
|
|
.page-header {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
margin-bottom: 20px;
|
}
|
|
.page-header h2 {
|
margin: 0;
|
color: #303133;
|
}
|
|
.filter-card {
|
margin-bottom: 20px;
|
}
|
|
.pagination-container {
|
margin-top: 20px;
|
display: flex;
|
justify-content: flex-end;
|
}
|
|
/* 响应式设计 */
|
@media (max-width: 768px) {
|
.page-header {
|
flex-direction: column;
|
align-items: flex-start;
|
gap: 10px;
|
}
|
|
.header-actions {
|
width: 100%;
|
justify-content: space-between;
|
}
|
}
|
</style>
|