前端代码

This commit is contained in:
liumengyu
2026-08-21 18:42:51 +08:00
parent 054947482f
commit 04e06a9c9a
762 changed files with 62992 additions and 0 deletions
@@ -0,0 +1,824 @@
<template>
<div class="app-container teacher-page">
<!-- 查询条件 -->
<el-card shadow="never" class="search-card">
<el-form :model="searchForm" label-width="110px" class="search-form">
<el-row :gutter="0">
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.jysEnabled">教研室</el-checkbox>
</template>
<el-select v-model="searchForm.jys" placeholder="请选择教研室" class="w-full"
:disabled="!searchForm.jysEnabled" clearable>
<el-option v-for="item in jysOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.jyxmEnabled">教员姓名</el-checkbox>
</template>
<el-input v-model="searchForm.jyxm" placeholder="请输入教员姓名" clearable
:disabled="!searchForm.jyxmEnabled" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="0">
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.zcEnabled">职称</el-checkbox>
</template>
<el-select v-model="searchForm.zc" placeholder="请选择职称" class="w-full"
:disabled="!searchForm.zcEnabled" clearable>
<el-option v-for="item in zcOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.xbEnabled">性别</el-checkbox>
</template>
<el-select v-model="searchForm.xb" placeholder="请选择性别" class="w-full"
:disabled="!searchForm.xbEnabled" clearable>
<el-option v-for="item in xbOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="0">
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.xlEnabled">学历</el-checkbox>
</template>
<el-select v-model="searchForm.xl" placeholder="请选择学历" class="w-full"
:disabled="!searchForm.xlEnabled" clearable>
<el-option v-for="item in xlOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.xwEnabled">学位</el-checkbox>
</template>
<el-select v-model="searchForm.xw" placeholder="请选择学位" class="w-full"
:disabled="!searchForm.xwEnabled" clearable>
<el-option v-for="item in xwOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="0">
<el-col :span="12">
<el-form-item label="进校日期">
<div class="date-range">
<el-date-picker v-model="searchForm.jzrqStart" type="date" value-format="yyyy-MM-dd"
placeholder="开始日期" class="date-picker" />
<span class="date-sep">至</span>
<el-date-picker v-model="searchForm.jzrqEnd" type="date" value-format="yyyy-MM-dd"
placeholder="结束日期" class="date-picker" />
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.lxfsEnabled">联系方式</el-checkbox>
</template>
<el-input v-model="searchForm.lxfs" placeholder="请输入联系方式" clearable
:disabled="!searchForm.lxfsEnabled" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="0">
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.sfsjjzEnabled">是否实教教员</el-checkbox>
</template>
<el-radio-group v-model="searchForm.sfsjjz" :disabled="!searchForm.sfsjjzEnabled">
<el-radio v-for="item in sfsjjzOptions" :key="item" :label="item">{{ item }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<template slot="label">
<el-checkbox v-model="searchForm.jylbEnabled">教员类别</el-checkbox>
</template>
<el-select v-model="searchForm.jylb" placeholder="请选择教员类别" clearable class="w-full"
:disabled="!searchForm.jylbEnabled">
<el-option v-for="item in jylbOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="search-tip">
注意:勾选"选择框"表示启用该项对应的查询条件。
</div>
<div class="search-actions">
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button @click="handleReset">重置</el-button>
</div>
</el-card>
<!-- 教员列表 -->
<div class="list-title">教员列表:</div>
<div class="list-toolbar">
<div class="left-group">
<el-button type="primary" @click="handleNew">新建</el-button>
<el-button type="primary" @click="handleDeleteSelected">删除所选</el-button>
<el-button type="primary" @click="handleImport">导入教员信息</el-button>
</div>
<div class="right-group">
<el-button type="primary" @click="handleDownloadTemplate">【教员数据文件模板】下载</el-button>
</div>
</div>
<el-card shadow="never" class="table-card">
<el-table v-loading="loading" :data="tableData" stripe border highlight-current-row
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="jybh" label="教员编号" width="100" align="center" />
<el-table-column prop="jyxm" label="教员姓名" width="100" align="center" />
<el-table-column label="性别" width="60" align="center">
<template slot-scope="scope">{{ scope.row.xb === 0 ? '男' : scope.row.xb === 1 ? '女' : scope.row.xb }}</template>
</el-table-column>
<el-table-column prop="jysmc" label="教研室名称" align="center" />
<el-table-column prop="zc" label="职称" width="100" align="center" />
<el-table-column prop="xl" label="学历" width="120" align="center" />
<el-table-column prop="xw" label="学位" width="100" align="center" />
<el-table-column prop="cssj" label="出生时间" width="120" align="center" :formatter="formatDate" />
<el-table-column prop="sjh" label="联系方式" width="130" align="center" />
<el-table-column label="虚实类型" width="100" align="center">
<template slot-scope="scope">{{ scope.row.xslx === 0 ? '教学型' : scope.row.xslx === 1 ? '科研型' : scope.row.xslx }}</template>
</el-table-column>
<el-table-column prop="sfsjjz" label="是否实教教员" width="120" align="center" />
<el-table-column label="操作" width="200" align="center" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="handleViewAttribute(scope.row)">查看属性</el-button>
<el-button type="text" style="color: #e6a23c" @click="handleEdit(scope.row)">编辑</el-button>
<el-button type="text" style="color: #f56c6c" @click="handleToggleDisable(scope.row)">停用</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination-wrap">
<el-pagination
:current-page="pagination.pageNum"
:page-size="pagination.pageSize"
:total="pagination.total"
:page-sizes="[10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</el-card>
<!-- 教员属性详情对话框 -->
<el-dialog :visible.sync="attributeVisible" title="教员属性" width="720px" :destroy-on-close="true">
<div v-loading="attributeLoading || attributeSaving">
<!-- 查看模式 -->
<el-descriptions v-if="attributeMode === 'view'" :column="2" border>
<el-descriptions-item v-for="(value, key) in attributeData" :key="key" :label="ATTR_LABELS[key] || key"
label-align="right" align="center">
{{ value === null || value === undefined || value === '' ? '—' : value }}
</el-descriptions-item>
</el-descriptions>
<!-- 编辑模式 -->
<el-form v-else-if="attributeMode === 'edit'" label-width="120px" class="attribute-form">
<el-form-item v-for="(value, key) in attributeData" :key="key" :label="ATTR_LABELS[key] || key">
<el-input v-if="isEditableValue(value)" v-model="attributeData[key]" :disabled="key === 'jybh'"
:placeholder="key === 'jybh' ? '' : '请输入'" clearable />
<span v-else class="readonly-value">{{ typeof value === 'object' ? JSON.stringify(value) : value }}</span>
</el-form-item>
</el-form>
<el-empty v-else description="暂无属性数据" />
</div>
<div slot="footer" class="dialog-footer">
<template v-if="attributeMode === 'view'">
<el-button @click="attributeVisible = false">关闭</el-button>
<el-button type="primary" @click="handleStartEdit">编辑</el-button>
</template>
<template v-else>
<el-button @click="handleCancelEdit">取消</el-button>
<el-button type="primary" :loading="attributeSaving" @click="handleSaveAttribute">保存</el-button>
</template>
</div>
</el-dialog>
<!-- 新建教员对话框 -->
<el-dialog :visible.sync="addDialogVisible" title="新建教员" width="800px" :destroy-on-close="true">
<el-form :model="addForm" label-width="140px" class="add-form">
<el-divider content-position="left">教员基本信息</el-divider>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教员编号" required><el-input v-model="addForm.teacher.jybh" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="教员姓名" required><el-input v-model="addForm.teacher.jyxm" placeholder="请输入" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教研室代号" required><el-input v-model="addForm.teacher.jysdh" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" required>
<el-select v-model="addForm.teacher.xb" style="width:100%">
<el-option :value="0" label="男" /><el-option :value="1" label="女" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="身份证号" required><el-input v-model="addForm.teacher.sfzh" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="离职状态" required>
<el-select v-model="addForm.teacher.lzzt" style="width:100%">
<el-option :value="0" label="在职" /><el-option :value="1" label="离职" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="专业技术职务等级" required><el-input v-model="addForm.teacher.zyjszwdj" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="虚实类型" required>
<el-select v-model="addForm.teacher.xslx" style="width:100%">
<el-option :value="0" label="教学型" /><el-option :value="1" label="科研型" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教员类别" required>
<el-select v-model="addForm.teacher.jylb" style="width:100%">
<el-option v-for="item in jylbOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="在职类别" required><el-input v-model="addForm.teacher.zzlb" placeholder="请输入" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="导师类别" required><el-input v-model="addForm.teacher.dslb" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学缘" required><el-input v-model="addForm.teacher.xy" placeholder="请输入" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="额外允许开班数" required>
<el-input-number v-model="addForm.teacher.ewyxkbs" :min="0" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="外训教员" required>
<el-select v-model="addForm.teacher.wxjy" style="width:100%">
<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="外训译员" required>
<el-select v-model="addForm.teacher.wxyy" style="width:100%">
<el-option :value="0" label="否" /><el-option :value="1" label="是" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="政治类教员" required>
<el-select v-model="addForm.teacher.zzljy" style="width:100%">
<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-select v-model="addForm.teacher.zc" placeholder="选填" style="width:100%" clearable>
<el-option v-for="item in zcOptions" :key="item" :label="item" :value="item" /></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="手机号"><el-input v-model="addForm.teacher.sjh" placeholder="选填" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拼音"><el-input v-model="addForm.teacher.py" placeholder="选填" /></el-form-item>
</el-col>
</el-row>
<el-divider content-position="left">教员属性</el-divider>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="学历" required>
<el-select v-model="addForm.attributes.xl" placeholder="请选择" style="width:100%">
<el-option v-for="item in xlOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学位" required>
<el-select v-model="addForm.attributes.xw" placeholder="请选择" style="width:100%">
<el-option v-for="item in xwOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教龄" required>
<el-input-number v-model="addForm.attributes.jl" :min="0" style="width:100%" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="教龄计算日期" required>
<el-date-picker v-model="addForm.attributes.jljsrq" type="datetime" value-format="yyyy-MM-ddTHH:mm:ss"
placeholder="选择日期" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="主任">
<el-select v-model="addForm.attributes.zr" style="width:100%">
<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="addForm.attributes.jszw" placeholder="选填" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="技术职务时间">
<el-date-picker v-model="addForm.attributes.jszwsj" type="datetime" value-format="yyyy-MM-ddTHH:mm:ss"
placeholder="选填" style="width:100%" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="技术等级"><el-input v-model="addForm.attributes.jsdj" placeholder="选填" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="技术等级时间">
<el-date-picker v-model="addForm.attributes.jsdjsj" type="datetime" value-format="yyyy-MM-ddTHH:mm:ss"
placeholder="选填" style="width:100%" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="军衔文职"><el-input v-model="addForm.attributes.jxwz" placeholder="选填" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="军衔文职时间">
<el-date-picker v-model="addForm.attributes.jxwzsj" type="datetime" value-format="yyyy-MM-ddTHH:mm:ss"
placeholder="选填" style="width:100%" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生时间">
<el-date-picker v-model="addForm.attributes.cssj" type="datetime" value-format="yyyy-MM-ddTHH:mm:ss"
placeholder="选填" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="入伍工作时间">
<el-date-picker v-model="addForm.attributes.rwgzsj" type="datetime" value-format="yyyy-MM-ddTHH:mm:ss"
placeholder="选填" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="addSaving" @click="handleAddConfirm">确定</el-button>
</div>
</el-dialog>
<!-- 编辑教员基本信息对话框 -->
<el-dialog :visible.sync="editDialogVisible" title="编辑教员信息" width="780px" :destroy-on-close="true">
<div v-loading="editLoading">
<el-form :model="editForm" label-width="140px" class="add-form">
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教员编号"><el-input v-model="editForm.jybh" disabled /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="教员姓名" required><el-input v-model="editForm.jyxm" placeholder="请输入" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教研室代号" required><el-input v-model="editForm.jysdh" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" required>
<el-select v-model="editForm.xb" style="width:100%">
<el-option :value="0" label="男" /><el-option :value="1" label="女" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="身份证号" required><el-input v-model="editForm.sfzh" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="离职状态" required>
<el-select v-model="editForm.lzzt" style="width:100%">
<el-option :value="0" label="在职" /><el-option :value="1" label="离职" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="专业技术职务等级" required><el-input v-model="editForm.zyjszwdj" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="虚实类型" required>
<el-select v-model="editForm.xslx" style="width:100%">
<el-option :value="0" label="教学型" /><el-option :value="1" label="科研型" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="教员类别" required>
<el-select v-model="editForm.jylb" style="width:100%">
<el-option v-for="item in jylbOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="在职类别" required><el-input v-model="editForm.zzlb" placeholder="请输入" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="导师类别" required><el-input v-model="editForm.dslb" placeholder="请输入" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学缘" required><el-input v-model="editForm.xy" placeholder="请输入" /></el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="额外允许开班数" required>
<el-input-number v-model="editForm.ewyxkbs" :min="0" style="width:100%" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="外训教员" required>
<el-select v-model="editForm.wxjy" style="width:100%">
<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="外训译员" required>
<el-select v-model="editForm.wxyy" style="width:100%">
<el-option :value="0" label="否" /><el-option :value="1" label="是" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="政治类教员" required>
<el-select v-model="editForm.zzljy" style="width:100%">
<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-select v-model="editForm.zc" style="width:100%" clearable>
<el-option v-for="item in zcOptions" :key="item" :label="item" :value="item" /></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="手机号"><el-input v-model="editForm.sjh" placeholder="选填" /></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拼音"><el-input v-model="editForm.py" placeholder="选填" /></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="editSaving" @click="handleEditConfirm">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
// 各下拉框选项:数据待后端接口返回后替换
const JYS_OPTIONS = [] // 教研室
const ZC_OPTIONS = ['教授', '副教授', '讲师', '助教'] // 职称
const XL_OPTIONS = ['博士', '硕士', '本科', '大专'] // 学历
const XW_OPTIONS = ['博士', '硕士', '学士'] // 学位
const JYLB_OPTIONS = [] // 教员类别
export default {
name: 'Teacher',
data() {
return {
// 查询条件
searchForm: {
jysEnabled: false, jys: '',
jyxmEnabled: false, jyxm: '',
zcEnabled: false, zc: '',
xbEnabled: false, xb: '',
xlEnabled: false, xl: '',
xwEnabled: false, xw: '',
jzrqStart: '', jzrqEnd: '',
lxfsEnabled: false, lxfs: '',
sfsjjzEnabled: false, sfsjjz: '是',
jylbEnabled: false, jylb: ''
},
options: {
jys: JYS_OPTIONS,
zc: ZC_OPTIONS,
xl: XL_OPTIONS,
xw: XW_OPTIONS,
jylb: JYLB_OPTIONS
},
// 教员列表
loading: false,
tableData: [],
selectedRows: [],
pagination: { pageNum: 1, pageSize: 10, total: 0 },
// 属性详情
attributeVisible: false,
attributeMode: 'view',
attributeData: {},
attributeLoading: false,
attributeSaving: false,
// 新建
addDialogVisible: false,
addSaving: false,
addForm: {
teacher: {
jybh: '', jyxm: '', jysdh: '', xb: '', sfzh: '', lzzt: '', zyjszwdj: '',
xslx: '', jylb: '', zzlb: '', dslb: '', xy: '', ewyxkbs: 0,
wxjy: '', wxyy: '', zzljy: '', zc: '', sjh: '', py: ''
},
attributes: {
xl: '', xw: '', jl: 0, jljsrq: '', zr: '', jszw: '', jszwsj: '',
jsdj: '', jsdjsj: '', jxwz: '', jxwzsj: '', cssj: '', rwgzsj: ''
}
},
// 编辑
editDialogVisible: false,
editLoading: false,
editSaving: false,
editForm: {}
}
},
computed: {
jysOptions() { return this.options.jys },
zcOptions() { return this.options.zc },
xlOptions() { return this.options.xl },
xwOptions() { return this.options.xw },
jylbOptions() { return this.options.jylb },
xbOptions() { return [{ value: 0, label: '男' }, { value: 1, label: '女' }] },
sfsjjzOptions() { return ['是', '否'] },
// 属性字段中文名映射
ATTR_LABELS() { return ATTR_LABELS_MAP }
},
created() {
// TODO: 待后端接口,拉取教研室等下 拉选项与教员列表
// this.loadOptions()
// this.getList()
},
methods: {
// 属性字段中文名(配合接口返回字段使用)
isEditableValue(value) {
// TODO: 根据字段类型判断是否可编辑
return typeof value !== 'object' || value === null
},
formatDate(row, column, cellValue) {
return cellValue ? String(cellValue).substring(0, 10) : ''
},
/** 查询 */
handleSearch() {
// TODO: 调用查询接口
},
/** 重置 */
handleReset() {
this.searchForm = {
jysEnabled: false, jys: '', jyxmEnabled: false, jyxm: '',
zcEnabled: false, zc: '', xbEnabled: false, xb: '',
xlEnabled: false, xl: '', xwEnabled: false, xw: '',
jzrqStart: '', jzrqEnd: '', lxfsEnabled: false, lxfs: '',
sfsjjzEnabled: false, sfsjjz: '是', jylbEnabled: false, jylb: ''
}
},
/** 新建 */
handleNew() {
// TODO: 打开新建对话框
},
/** 删除所选 */
handleDeleteSelected() {
// TODO: 批量删除
},
/** 导入教员信息 */
handleImport() {
// TODO: 导入
},
/** 下载模板 */
handleDownloadTemplate() {
// TODO: 模板下载
},
/** 表格多选 */
handleSelectionChange(rows) {
this.selectedRows = rows
},
/** 查看属性 */
handleViewAttribute(row) {
// TODO: 拉取行属性并打开
this.attributeVisible = true
},
/** 编辑基本信息 */
handleEdit(row) {
// TODO: 回填并打开编辑对话框
this.editDialogVisible = true
},
/** 停用 */
handleToggleDisable(row) {
// TODO: 停用接口
},
/** 分页 */
handleSizeChange(val) {
this.pagination.pageSize = val
// TODO: 重新查询
},
handleCurrentChange(val) {
this.pagination.pageNum = val
// TODO: 重新查询
},
/** 属性-开始编辑 */
handleStartEdit() {
this.attributeMode = 'edit'
},
/** 属性-取消编辑 */
handleCancelEdit() {
this.attributeMode = 'view'
},
/** 属性-保存 */
handleSaveAttribute() {
// TODO: 保存属性接口
this.attributeMode = 'view'
},
/** 新建-确认 */
handleAddConfirm() {
// TODO: 新增接口
this.addDialogVisible = false
},
/** 编辑-确认 */
handleEditConfirm() {
// TODO: 编辑接口
this.editDialogVisible = false
}
}
}
// 属性字段中文名映射(后续按接口字段补全)
const ATTR_LABELS_MAP = {
jybh: '教员编号',
jyxm: '教员姓名',
xb: '性别',
jysdh: '教研室代号',
jysmc: '教研室名称',
zc: '职称',
xl: '学历',
xw: '学位',
cssj: '出生时间',
sjh: '手机号',
xslx: '虚实类型',
sfsjjz: '是否实教教员'
}
</script>
<style scoped lang="scss">
.teacher-page {
.search-card {
margin-bottom: 16px;
}
.search-form {
.w-full {
width: 100%;
}
.date-range {
display: flex;
align-items: center;
width: 100%;
.date-picker {
flex: 1;
}
.date-sep {
margin: 0 8px;
color: #909399;
flex-shrink: 0;
}
}
}
.search-tip {
margin: 8px 0 16px;
font-size: 13px;
color: #909399;
}
.search-actions {
text-align: right;
border-top: 1px solid #ebeef5;
padding-top: 12px;
}
.list-title {
font-size: 15px;
font-weight: 600;
color: #303133;
margin: 8px 0 12px;
padding-left: 10px;
border-left: 4px solid var(--edu-green-primary);
}
.list-toolbar {
margin-bottom: 12px;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
.left-group,
.right-group {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
}
.table-card {
margin-bottom: 16px;
}
.pagination-wrap {
padding: 14px 0 4px;
text-align: right;
}
.attribute-form {
.readonly-value {
color: #606266;
}
}
}
</style>