forked from liweijie/education
前端代码
This commit is contained in:
@@ -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>
|
||||
Reference in New Issue
Block a user