a
This commit is contained in:
254
src/views/professional/teacherbase/export-teacher-info.vue
Normal file
254
src/views/professional/teacherbase/export-teacher-info.vue
Normal file
@@ -0,0 +1,254 @@
|
||||
<template>
|
||||
<el-dialog v-model="dialogEmptyFromVisible" title="教职工信息导出" width="80%">
|
||||
<el-form style="margin-left: 7px" :inline="true">
|
||||
<el-form-item>
|
||||
<el-tag>导出教职工人数,依据'职工信息'页面检索条件,如部门,职称等级等条件</el-tag>
|
||||
<el-tag type="warning">*请在'职工信息'页面点击搜索后,再点开当前导出页面</el-tag>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否退休">
|
||||
<el-select
|
||||
v-model="tiedTag"
|
||||
filterable
|
||||
reserve-keyword
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in YES_OR_NO"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="exportTeacherInfo"
|
||||
:loading="exportLoading"
|
||||
size="small">导出</el-button>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<!-- 基本信息 -->
|
||||
<div class="div_stuData" style="margin-bottom: 5px;margin-top: 5px;">基础信息
|
||||
<el-checkbox v-model="allCheckTeacherBaseInfo" style="margin-left:20px">全选</el-checkbox>
|
||||
</div>
|
||||
<el-tabs type="border-card" tab-position="left">
|
||||
<el-form ref="baseForm" label-width="120px">
|
||||
<el-row>
|
||||
<el-checkbox-group v-model="checkedTeacherBaseInfo">
|
||||
<el-checkbox v-for="(item,index) in teacherBasicCheckData" :label="item.value" :key="index">{{item.label}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tabs>
|
||||
|
||||
<!-- 岗位信息 -->
|
||||
<div class="div_stuData" style="margin-bottom: 5px;margin-top: 5px;">岗位信息
|
||||
<el-checkbox v-model="allCheckStationInfo">全选</el-checkbox>
|
||||
</div>
|
||||
<el-tabs type="border-card" tab-position="left">
|
||||
<el-form ref="baseForm" label-width="120px">
|
||||
<el-row>
|
||||
<el-checkbox-group v-model="checkedTeacherStationInfo">
|
||||
<el-checkbox v-for="(item, index) in teacherStationData" :key="index" :label="item.value">{{item.label}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tabs>
|
||||
|
||||
<!-- 其他 -->
|
||||
<div class="div_stuData" style="margin-bottom: 5px;margin-top: 5px;">其他
|
||||
<el-checkbox v-model="allCheckedother" style="margin-left: 20px">全选</el-checkbox>
|
||||
</div>
|
||||
<el-tabs type="border-card" tab-position="left">
|
||||
<el-form ref="baseForm" label-width="120px">
|
||||
<el-row>
|
||||
<el-checkbox-group v-model="checkedTeacherOtherInfo">
|
||||
<el-checkbox v-for="(item, index) in teacherOtherData" :key="index" :label="item.value">{{item.label}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tabs>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch } from 'vue'
|
||||
import { ElNotification } from 'element-plus'
|
||||
import global from '/@/components/tools/commondict.vue'
|
||||
import request from '/@/utils/request'
|
||||
|
||||
// Props
|
||||
const props = defineProps<{
|
||||
search: any
|
||||
}>()
|
||||
|
||||
// 响应式数据
|
||||
const tiedTag = ref('')
|
||||
const YES_OR_NO = global.YES_OR_NO
|
||||
const exportLoading = ref(false)
|
||||
const dialogEmptyFromVisible = ref(false)
|
||||
const allCheckTeacherBaseInfo = ref(false)
|
||||
const allCheckStationInfo = ref(false)
|
||||
const allCheckedother = ref(false)
|
||||
const checkedTeacherBaseInfo = ref<string[]>([])
|
||||
const checkedTeacherStationInfo = ref<string[]>([])
|
||||
const checkedTeacherOtherInfo = ref<string[]>([])
|
||||
|
||||
const teacherBasicCheckData = [
|
||||
{label:'姓名',value:'realName_姓名'},
|
||||
{label:'工号',value:'teacherNo_工号'},
|
||||
{label:'部门',value:'deptCode_部门'},
|
||||
{label:'性别',value:'sex_性别'},
|
||||
{label:'身份证',value:'idCard_身份证'},
|
||||
{label:'出生年月',value:'birthday_出生年月'},
|
||||
{label:'年龄',value:'age_年龄'},
|
||||
{label:'手机',value:'telPhone_手机'},
|
||||
{label:'手机2',value:'telPhoneTwo_手机2'},
|
||||
{label:'宅电',value:'homePhone_宅电'},
|
||||
{label:'民族',value:'national_民族'},
|
||||
{label:'籍贯',value:'nativePlace_籍贯'},
|
||||
{label:'出生地',value:'birthPlace_出生地'},
|
||||
{label:'健康状况',value:'health_健康状况'},
|
||||
{label:'特长',value:'speciality_特长'},
|
||||
{label:'银行卡号',value:'bankNo_银行卡号'},
|
||||
{label:'开户行',value:'bankOpen_开户行'},
|
||||
{label:'家庭住址',value:'homeAddress_家庭住址'},
|
||||
{label:'授课类型',value:'teacherCate_授课类型'},
|
||||
{label:'允许进出',value:'inoutFlag_允许进出'},
|
||||
{label:'进出情况备注',value:'inoutRemarks_进出情况备注'},
|
||||
]
|
||||
|
||||
const teacherStationData = [
|
||||
{label:'教师类型',value:'teacherTypeName_教师类型'},
|
||||
{label:'党支部',value:'branchName_党支部'},
|
||||
{label:'用工性质',value:'employmentNatureName_用工性质'},
|
||||
{label:'岗位类别',value:'stationTypeName_岗位类别'},
|
||||
{label:'岗位级别',value:'stationLevelName_岗位级别'},
|
||||
{label:'职务级别',value:'stationDutyLevelName_职务级别'},
|
||||
{label:'任现岗位职级时间',value:'stationDate_任现岗位职级时间'},
|
||||
{label:'在职情况',value:'atStationName_在职情况'},
|
||||
{label:'职务',value:'dutyDesc_职务'},
|
||||
{label:'参加工作时间',value:'workDate_参加工作时间'},
|
||||
{label:'退休时间',value:'retireDate_退休时间'},
|
||||
{label:'职位类别',value:'teacherClassify_职位类别'},
|
||||
{label:'任现职务时间',value:'dutyDate_任现职务时间'},
|
||||
{label:'进编时间',value:'entryDutyDate_进编时间'},
|
||||
{label:'进校时间',value:'entrySchoolDate_进校时间'},
|
||||
]
|
||||
|
||||
const teacherOtherData = [
|
||||
{label:'职业资格工种',value:'zyzg_职业资格工种'},
|
||||
{label:'职业资格等级',value:'zyzgLevel_职业资格等级'},
|
||||
{label:'政治面貌',value:'zzmm_政治面貌'},
|
||||
{label:'学历',value:'xl_学历'},
|
||||
{label:'学位',value:'xw_学位'},
|
||||
{label:'职称',value:'zc_职称'},
|
||||
{label:'高校教师资格证',value:'highCer_高校教师资格证'},
|
||||
{label:'中等教师资格证',value:'midCer_中等教师资格证'},
|
||||
{label:'教师上岗证',value:'priCer_教师上岗证'},
|
||||
{label:'共同居住人',value:'livewith_共同居住人'},
|
||||
]
|
||||
|
||||
// 导出文件函数
|
||||
const exportForModel = async (params: any, fileNameStr: string, url: string) => {
|
||||
try {
|
||||
const res = await request({
|
||||
method: 'post',
|
||||
url: url,
|
||||
data: params,
|
||||
responseType: 'blob',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
})
|
||||
const blob = new Blob([res.data])
|
||||
const fileName = fileNameStr
|
||||
const elink = document.createElement('a')
|
||||
elink.download = fileName
|
||||
elink.style.display = 'none'
|
||||
elink.href = URL.createObjectURL(blob)
|
||||
document.body.appendChild(elink)
|
||||
elink.click()
|
||||
URL.revokeObjectURL(elink.href)
|
||||
document.body.removeChild(elink)
|
||||
} catch (err) {
|
||||
ElNotification.error({
|
||||
title: '错误',
|
||||
message: '导出失败',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Watch
|
||||
watch(allCheckTeacherBaseInfo, (newVal) => {
|
||||
if (newVal) {
|
||||
checkedTeacherBaseInfo.value = teacherBasicCheckData.map(item => item.value)
|
||||
} else {
|
||||
checkedTeacherBaseInfo.value = []
|
||||
}
|
||||
})
|
||||
|
||||
watch(allCheckStationInfo, (newVal) => {
|
||||
if (newVal) {
|
||||
checkedTeacherStationInfo.value = teacherStationData.map(item => item.value)
|
||||
} else {
|
||||
checkedTeacherStationInfo.value = []
|
||||
}
|
||||
})
|
||||
|
||||
watch(allCheckedother, (newVal) => {
|
||||
if (newVal) {
|
||||
checkedTeacherOtherInfo.value = teacherOtherData.map(item => item.value)
|
||||
} else {
|
||||
checkedTeacherOtherInfo.value = []
|
||||
}
|
||||
})
|
||||
|
||||
// 方法
|
||||
const init = () => {
|
||||
tiedTag.value = props.search.tied
|
||||
dialogEmptyFromVisible.value = true
|
||||
}
|
||||
|
||||
const exportTeacherInfo = async () => {
|
||||
if (checkedTeacherBaseInfo.value.length == 0 && checkedTeacherStationInfo.value.length == 0 && checkedTeacherOtherInfo.value.length == 0) {
|
||||
ElNotification({
|
||||
title: '警告',
|
||||
message: '请选择要导出的字段',
|
||||
type: 'warning',
|
||||
duration: 3000
|
||||
})
|
||||
return
|
||||
}
|
||||
exportLoading.value = true
|
||||
|
||||
const searchData = JSON.parse(JSON.stringify(props.search))
|
||||
searchData.tied = tiedTag.value
|
||||
const params = {
|
||||
"checkedTeacherBaseInfo": checkedTeacherBaseInfo.value,
|
||||
"checkedTeacherStationInfo": checkedTeacherStationInfo.value,
|
||||
"checkedTeacherOtherInfo": checkedTeacherOtherInfo.value,
|
||||
"teacherBaseDTO": searchData
|
||||
}
|
||||
|
||||
await exportForModel(params, "教职工信息.xls", "/professional/teacherbase/exportTeacherInfoBySelf")
|
||||
|
||||
setTimeout(() => {
|
||||
exportLoading.value = false
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
// 暴露方法给父组件
|
||||
defineExpose({
|
||||
init
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
82
src/views/professional/teacherbase/import-teacherInfo.vue
Normal file
82
src/views/professional/teacherbase/import-teacherInfo.vue
Normal file
@@ -0,0 +1,82 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" title="导入" width="80%" append-to-body>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<a href="excel/dictlist.xlsx" rel="external nofollow" download="职工信息字典下载">
|
||||
<el-button style="margin-left: 20px" size="small" type="success">职工信息字典下载</el-button>
|
||||
</a>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-tag>导入时,部分字段需严格按照字典值填写</el-tag>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action="/professional/file/importTeacherInfoSimple"
|
||||
:headers="headers"
|
||||
:accept="'.xls,.xlsx'"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-error="handleAvatarError"
|
||||
list-type="picture">
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">只能上传后缀为xls,xlsx的文件</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed } from 'vue'
|
||||
import { ElNotification } from 'element-plus'
|
||||
import { Session } from '/@/utils/storage'
|
||||
|
||||
// 响应式数据
|
||||
const visible = ref(false)
|
||||
|
||||
// 计算属性
|
||||
const headers = computed(() => {
|
||||
return {
|
||||
"Authorization": 'Bearer ' + Session.getToken()
|
||||
}
|
||||
})
|
||||
|
||||
// 方法
|
||||
const init = () => {
|
||||
visible.value = true
|
||||
}
|
||||
|
||||
const handleUploadSuccess = () => {
|
||||
visible.value = false
|
||||
ElNotification({
|
||||
title: '成功',
|
||||
message: '导入成功',
|
||||
type: 'success',
|
||||
})
|
||||
}
|
||||
|
||||
const handleAvatarError = (err: any) => {
|
||||
const result = JSON.parse(err.message)
|
||||
if (result.code == "1") {
|
||||
ElNotification.error({
|
||||
title: '错误',
|
||||
message: result.msg,
|
||||
duration: 30000
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 暴露方法给父组件
|
||||
defineExpose({
|
||||
init
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
3136
src/views/professional/teacherbase/index.vue
Normal file
3136
src/views/professional/teacherbase/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
842
src/views/professional/teacherbase/multiDialog.vue
Normal file
842
src/views/professional/teacherbase/multiDialog.vue
Normal file
@@ -0,0 +1,842 @@
|
||||
<template>
|
||||
<el-dialog v-model="educationDialogFromVisible" width="80%" :title="waitShenheForm.title" append-to-body>
|
||||
|
||||
<!--2.1 教师资格证-->
|
||||
<el-form v-if="waitShenheForm.a" ref="teacherCertificateFormRef" :model="waitShenheForm.form" :rules="teacherCertificateRules" label-width="120px">
|
||||
<el-form-item label="类型" prop="certificateConfId">
|
||||
<el-select v-model="waitShenheForm.form.certificateConfId" placeholder="请选择类型" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in certificateTypeList"
|
||||
:key="item.id"
|
||||
:label="item.cretificateName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证书编号" prop="certificateNumber">
|
||||
<el-input v-model="waitShenheForm.form.certificateNumber" placeholder="请输入证书编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证明材料">
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
style="width:3.5cm;height:5.3cm;"
|
||||
:limit="1"
|
||||
:action="materialUrlFrom.url"
|
||||
:file-list="materialUrlFrom.fileListA"
|
||||
:on-success="materiaUploadSuccessA"
|
||||
:accept="'.jpg,.jpeg,.png,.pdf'"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-tag>仅支持jpg,jpeg,png,pdf后缀的文件上传</el-tag>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(0)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--2.2 学历-->
|
||||
<el-form v-if="waitShenheForm.b" ref="educationFormRef" :model="waitShenheForm.form" :rules="educationRules" label-width="120px">
|
||||
<el-form-item label="毕业时间" prop="graduateTime">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.graduateTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="教育类型" prop="type">
|
||||
<el-select v-model="waitShenheForm.form.type" placeholder="请选择教育类型" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in educationTypeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="学历" prop="qualificationConfigId">
|
||||
<el-select v-model="waitShenheForm.form.qualificationConfigId" placeholder="请选择学历" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in qualificationList"
|
||||
:key="item.id"
|
||||
:label="item.qualificationName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="学位" prop="degreeConfigId">
|
||||
<el-select v-model="waitShenheForm.form.degreeConfigId" placeholder="请选择学位" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in degreeList"
|
||||
:key="item.id"
|
||||
:label="item.degreeName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="毕业学校" prop="graduateSchool">
|
||||
<el-input v-model="waitShenheForm.form.graduateSchool" placeholder="请输入毕业学校" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所学专业" prop="major">
|
||||
<el-input v-model="waitShenheForm.form.major" placeholder="请输入所学专业" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证书编码" prop="certificateNumber">
|
||||
<el-input v-model="waitShenheForm.form.certificateNumber" placeholder="请输入证书编码" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="学历证书">
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
style="width:3.5cm;height:5.3cm;"
|
||||
:limit="1"
|
||||
:action="materialUrlFrom.url"
|
||||
:file-list="materialUrlFrom.fileListA"
|
||||
:on-success="materiaUploadSuccessA"
|
||||
:accept="'.jpg,.jpeg,.png,.pdf'"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-tag>仅支持jpg,jpeg,png,pdf后缀的文件上传</el-tag>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="学位证书">
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
style="width:3.5cm;height:5.3cm;"
|
||||
:limit="1"
|
||||
:action="materialUrlFrom.url"
|
||||
:on-success="materiaUploadSuccessB"
|
||||
:file-list="materialUrlFrom.fileListB"
|
||||
:accept="'.jpg,.jpeg,.png,.pdf'"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-tag>仅支持jpg,jpeg,png,pdf后缀的文件上传</el-tag>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(1)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--2.3 职称-->
|
||||
<el-form v-if="waitShenheForm.c" ref="proFormRef" :model="waitShenheForm.form" :rules="proRules" label-width="120px">
|
||||
<el-form-item label="职称等级" prop="professionalTitleConfigId">
|
||||
<el-select v-model="waitShenheForm.form.professionalTitleConfigId" placeholder="请选择职称等级" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in baseInfoAbout.proTitleList"
|
||||
:key="item.id"
|
||||
:label="item.professionalTitle"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="专业技术职务" prop="majorStation">
|
||||
<el-select v-model="waitShenheForm.form.majorStation" placeholder="请选择专业技术职务" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in baseInfoAbout.majorStationList"
|
||||
:key="item.id"
|
||||
:label="item.majorStationName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="取证时间" prop="certificateTime">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.certificateTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="职称任职时间" prop="inOfficeDate">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.inOfficeDate"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证书编号" prop="certificateNumber">
|
||||
<el-input v-model="waitShenheForm.form.certificateNumber" placeholder="请输入证书编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证明材料">
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
style="width:3.5cm;height:5.3cm;"
|
||||
:limit="1"
|
||||
:action="materialUrlFrom.url"
|
||||
:file-list="materialUrlFrom.fileListA"
|
||||
:on-success="materiaUploadSuccessA"
|
||||
:accept="'.jpg,.jpeg,.png,.pdf'"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-tag>仅支持jpg,jpeg,png,pdf后缀的文件上传</el-tag>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(2)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--2.4 职业-->
|
||||
<el-form v-if="waitShenheForm.d" ref="workFormRef" :model="waitShenheForm.form" :rules="workRules" label-width="120px">
|
||||
<el-form-item label="职业工种" prop="worker">
|
||||
<el-select v-model="waitShenheForm.form.worker" filterable placeholder="请选择职业工种" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in baseInfoAbout.workTypeList"
|
||||
:key="item.id"
|
||||
:label="item.workName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="等级" prop="qualificationConfigId">
|
||||
<el-select v-model="waitShenheForm.form.qualificationConfigId" placeholder="请选择等级" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in baseInfoAbout.qualificationList"
|
||||
:key="item.id"
|
||||
:label="item.levelName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="取证时间" prop="certificateTime">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.certificateTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证书编号" prop="certificateNumber">
|
||||
<el-input v-model="waitShenheForm.form.certificateNumber" placeholder="请输入证书编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="材料1">
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
style="width:3.5cm;height:5.3cm;"
|
||||
:limit="1"
|
||||
:action="materialUrlFrom.url"
|
||||
:file-list="materialUrlFrom.fileListA"
|
||||
:on-success="materiaUploadSuccessA"
|
||||
:accept="'.jpg,.jpeg,.png,.pdf'"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-tag>仅支持jpg,jpeg,png,pdf后缀的文件上传</el-tag>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(3)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--2.5 综合表彰-->
|
||||
<el-form v-if="waitShenheForm.e" ref="honorFormRef" :model="waitShenheForm.form" :rules="honorRules" label-width="120px">
|
||||
<el-form-item label="荣誉" prop="honor">
|
||||
<el-input v-model="waitShenheForm.form.honor" placeholder="请填写荣誉" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="表彰单位" prop="honorCompany">
|
||||
<el-input v-model="waitShenheForm.form.honorCompany" placeholder="请填写表彰单位" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="年份" prop="year">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.year"
|
||||
type="year"
|
||||
placeholder="选择年份"
|
||||
format="yyyy"
|
||||
value-format="yyyy"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="证明材料">
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
style="width:3.5cm;height:5.3cm;"
|
||||
:limit="1"
|
||||
:action="materialUrlFrom.url"
|
||||
:on-success="materiaUploadSuccessA"
|
||||
:file-list="materialUrlFrom.fileListA"
|
||||
:accept="'.jpg,.jpeg,.png,.pdf'"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-tag>仅支持jpg,jpeg,png,pdf后缀的文件上传</el-tag>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(4)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--2.6 人员调动-->
|
||||
<el-form v-if="waitShenheForm.f" ref="stationChangeFormRef" :model="waitShenheForm.form" :rules="stationChangeRules" label-width="120px">
|
||||
<el-form-item label="工号">
|
||||
<el-tag>{{waitShenheForm.form.teacherNo}}</el-tag>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="姓名">
|
||||
<el-tag>{{waitShenheForm.form.realName}}</el-tag>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="原部门名称">
|
||||
<el-tag disabled>{{waitShenheForm.form.deptName}}</el-tag>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="现二级部门*">
|
||||
<el-select v-model="newSecDeptCode" @change="getDeptListByParent" placeholder="请选择二级部门" style="width: 100%">
|
||||
<el-option v-for="item in secDeptList"
|
||||
:key="item.deptCode"
|
||||
:label="item.deptName"
|
||||
:value="item.deptCode">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="现子级部门">
|
||||
<el-select v-model="newSecChildDeptCode" placeholder="请选择下级部门" clearable style="width: 100%">
|
||||
<el-option v-for="item in newSecChildDeptCodeList"
|
||||
:key="item.deptCode"
|
||||
:label="item.deptName"
|
||||
:value="item.deptCode">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="调令日期" prop="changeDate">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.changeDate"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="岗位类型" prop="pos">
|
||||
<el-select v-model="waitShenheForm.form.pos" placeholder="请选择岗位类型" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in global.STATION_TYPE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注" prop="remarks">
|
||||
<el-input v-model="waitShenheForm.form.remarks" type="textarea" :rows="3" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(5)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--2.7 党员调动-->
|
||||
<el-form v-if="waitShenheForm.g" ref="partChangeFormRef" :model="waitShenheForm.form" :rules="partChangeRules" label-width="120px">
|
||||
<el-form-item label="工号">
|
||||
<el-tag>{{waitShenheForm.form.teacherNo}}</el-tag>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="用户名">
|
||||
<el-tag>{{waitShenheForm.form.realName}}</el-tag>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="原支部名">
|
||||
<el-select disabled v-model="waitShenheForm.form.oldBranchName" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in baseInfoAbout.partBranchList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="现支部名" prop="branchName">
|
||||
<el-select clearable v-model="waitShenheForm.form.branchName" placeholder="请选择现支部" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in baseInfoAbout.partBranchList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="党费" prop="partyFee">
|
||||
<el-input-number v-model="waitShenheForm.form.partyFee" :precision="2" :min="0" style="width: 100%" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="变动时间" prop="changeTime">
|
||||
<el-date-picker
|
||||
v-model="waitShenheForm.form.changeTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注" prop="remarks">
|
||||
<el-input v-model="waitShenheForm.form.remarks" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="dialogSubmit(6)">提交</el-button>
|
||||
<el-button @click="educationDialogFromVisible = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, computed } from 'vue'
|
||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||
import { updateOtherInfo, getMyTeacherNo, getAllInfoAboutList } from '/@/api/professional/teacherbase'
|
||||
import { checkLocked } from '/@/api/professional/professionalstatuslock'
|
||||
import { getDeptListByLevelTwo, getDeptListByParent as getDeptListByParentApi } from '/@/api/basic/basicdept'
|
||||
import { getTeacherCertificateList } from '/@/api/professional/rsbase/professionalteachercertificateconf'
|
||||
import { getAllTypeList } from '/@/api/professional/rsbase/professionalacademiceducationtypeconfig'
|
||||
import { getQualificationList } from '/@/api/professional/rsbase/academicqualificationsconfig'
|
||||
import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig'
|
||||
import global from '/@/components/tools/commondict.vue'
|
||||
import { Session } from '/@/utils/storage'
|
||||
|
||||
// 字典数据
|
||||
const certificateTypeList = ref<any[]>([])
|
||||
const educationTypeList = ref<any[]>([])
|
||||
const qualificationList = ref<any[]>([])
|
||||
const degreeList = ref<any[]>([])
|
||||
|
||||
// 表单 ref
|
||||
const teacherCertificateFormRef = ref()
|
||||
const educationFormRef = ref()
|
||||
const proFormRef = ref()
|
||||
const workFormRef = ref()
|
||||
const honorFormRef = ref()
|
||||
const stationChangeFormRef = ref()
|
||||
const partChangeFormRef = ref()
|
||||
|
||||
// 表单验证规则
|
||||
const teacherCertificateRules = {
|
||||
certificateConfId: [{ required: true, message: '请选择类型', trigger: 'change' }],
|
||||
certificateNumber: [{ required: true, message: '请输入证书编号', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const educationRules = {
|
||||
graduateTime: [{ required: true, message: '请输入毕业时间', trigger: 'change' }],
|
||||
type: [{ required: true, message: '请选择教育类型', trigger: 'change' }],
|
||||
graduateSchool: [{ required: true, message: '请输入毕业学校', trigger: 'blur' }],
|
||||
major: [{ required: true, message: '请输入所学专业', trigger: 'blur' }],
|
||||
certificateNumber: [{ required: true, message: '请输入证书编码', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const proRules = {
|
||||
professionalTitleConfigId: [{ required: true, message: '请选择职称等级', trigger: 'change' }],
|
||||
majorStation: [{ required: true, message: '请选择专业技术职务', trigger: 'change' }],
|
||||
certificateTime: [{ required: true, message: '请选择取证时间', trigger: 'change' }],
|
||||
certificateNumber: [{ required: true, message: '请输入证书编号', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const workRules = {
|
||||
worker: [{ required: true, message: '请选择职业工种', trigger: 'change' }],
|
||||
qualificationConfigId: [{ required: true, message: '请选择等级', trigger: 'change' }],
|
||||
certificateTime: [{ required: true, message: '请选择取证时间', trigger: 'change' }],
|
||||
certificateNumber: [{ required: true, message: '请输入证书编号', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const honorRules = {
|
||||
honor: [{ required: true, message: '请填写荣誉', trigger: 'blur' }],
|
||||
honorCompany: [{ required: true, message: '请填写表彰单位', trigger: 'blur' }],
|
||||
year: [{ required: true, message: '请输入年份', trigger: 'change' }]
|
||||
}
|
||||
|
||||
const stationChangeRules = {
|
||||
changeDate: [{ required: true, message: '请选择日期', trigger: 'change' }],
|
||||
pos: [{ required: true, message: '请选择岗位类型', trigger: 'change' }]
|
||||
}
|
||||
|
||||
const partChangeRules = {
|
||||
branchName: [{ required: true, message: '请选择现支部', trigger: 'change' }],
|
||||
changeTime: [{ required: true, message: '请选择变动时间', trigger: 'change' }]
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const loadCertificateTypeList = async () => {
|
||||
try {
|
||||
const res = await getTeacherCertificateList()
|
||||
certificateTypeList.value = res.data || []
|
||||
} catch (err) {
|
||||
// 获取证书类型列表失败
|
||||
}
|
||||
}
|
||||
|
||||
const loadEducationTypeList = async () => {
|
||||
try {
|
||||
const res = await getAllTypeList()
|
||||
educationTypeList.value = res.data || []
|
||||
} catch (err) {
|
||||
// 获取教育类型列表失败
|
||||
}
|
||||
}
|
||||
|
||||
const loadQualificationList = async () => {
|
||||
try {
|
||||
const res = await getQualificationList()
|
||||
qualificationList.value = res.data || []
|
||||
} catch (err) {
|
||||
// 获取学历列表失败
|
||||
}
|
||||
}
|
||||
|
||||
const loadDegreeList = async () => {
|
||||
try {
|
||||
const res = await getDegreeList()
|
||||
degreeList.value = res.data || []
|
||||
} catch (err) {
|
||||
// 获取学位列表失败
|
||||
}
|
||||
}
|
||||
|
||||
// Props
|
||||
const props = defineProps<{
|
||||
page: any
|
||||
nowRow: any
|
||||
}>()
|
||||
|
||||
// Emits
|
||||
const emit = defineEmits(['getList'])
|
||||
|
||||
// 消息提示 hooks
|
||||
const message = useMessage()
|
||||
const messageBox = useMessageBox()
|
||||
|
||||
// 响应式数据
|
||||
const educationDialogFromVisible = ref(false)
|
||||
const waitShenheForm = reactive({
|
||||
form: {
|
||||
newDeptCodeList: [] as any[],
|
||||
deptCodeList: [] as any[]
|
||||
} as any,
|
||||
title: '',
|
||||
a: false,
|
||||
b: false,
|
||||
c: false,
|
||||
d: false,
|
||||
e: false,
|
||||
f: false,
|
||||
g: false
|
||||
})
|
||||
|
||||
const materialUrlFrom = reactive({
|
||||
url: '/professional/file/teacherAboutInfoUpload',
|
||||
fileListA: [] as any[],
|
||||
fileListB: [] as any[],
|
||||
fileListC: [] as any[]
|
||||
})
|
||||
|
||||
const baseInfoAbout = reactive({
|
||||
stationTypeList: [] as any[],
|
||||
atStationList: [] as any[],
|
||||
teacherTypeList: [] as any[],
|
||||
partBranchList: [] as any[],
|
||||
employmentNatureList: [] as any[],
|
||||
stationLevelList: [] as any[],
|
||||
stationDutyLevelList: [] as any[],
|
||||
workTypeList: [] as any[],
|
||||
proTitleList: [] as any[],
|
||||
majorStationList: [] as any[],
|
||||
qualificationList: [] as any[]
|
||||
})
|
||||
|
||||
const secDeptList = ref<any[]>([])
|
||||
const newSecChildDeptCodeList = ref<any[]>([])
|
||||
const newSecDeptCode = ref('')
|
||||
const newSecChildDeptCode = ref('')
|
||||
const teacherNo = ref('')
|
||||
|
||||
// Computed
|
||||
const headers = computed(() => {
|
||||
return {
|
||||
"Authorization": 'Bearer ' + Session.getToken()
|
||||
}
|
||||
})
|
||||
// 方法定义
|
||||
const initDicData = () => {
|
||||
getAllInfoAboutList().then((response: any) => {
|
||||
const map = response.data.data
|
||||
baseInfoAbout.stationTypeList = map['stationTypeList']
|
||||
baseInfoAbout.atStationList = map['atStationList']
|
||||
baseInfoAbout.teacherTypeList = map['teacherTypeList']
|
||||
baseInfoAbout.employmentNatureList = map['employmentNatureList']
|
||||
baseInfoAbout.stationLevelList = map['stationLevelList']
|
||||
baseInfoAbout.stationDutyLevelList = map['stationDutyLevelList']
|
||||
baseInfoAbout.workTypeList = map['workTypeList']
|
||||
baseInfoAbout.proTitleList = map['proTitleList']
|
||||
baseInfoAbout.majorStationList = map['majorStationList']
|
||||
baseInfoAbout.qualificationList = map['qualificationList']
|
||||
baseInfoAbout.partBranchList = map['partBranchList']
|
||||
})
|
||||
// 加载字典数据
|
||||
loadCertificateTypeList()
|
||||
loadEducationTypeList()
|
||||
loadQualificationList()
|
||||
loadDegreeList()
|
||||
}
|
||||
|
||||
const init = (val: number) => {
|
||||
initDicData()
|
||||
if (val == 5 || val == 6) {
|
||||
teacherNo.value = props.nowRow.teacherNo
|
||||
handleWaitExam(val)
|
||||
} else {
|
||||
for (let i in waitShenheForm.form) {
|
||||
if (i !== 'newDeptCodeList' && i !== 'deptCodeList') {
|
||||
(waitShenheForm.form as any)[i] = ''
|
||||
}
|
||||
}
|
||||
waitShenheForm.form.newDeptCodeList = []
|
||||
waitShenheForm.form.deptCodeList = []
|
||||
materialUrlFrom.fileListA = []
|
||||
materialUrlFrom.fileListB = []
|
||||
materialUrlFrom.fileListC = []
|
||||
materialUrlFrom.url = '/professional/file/teacherAboutInfoUpload'
|
||||
|
||||
let statusCode = ""
|
||||
if (val == 0) {
|
||||
statusCode = "teacherTitle"
|
||||
}
|
||||
if (val == 1) {
|
||||
statusCode = "acade"
|
||||
}
|
||||
if (val == 2) {
|
||||
statusCode = "title"
|
||||
}
|
||||
if (val == 3) {
|
||||
statusCode = "job"
|
||||
}
|
||||
if (val == 4) {
|
||||
statusCode = "remix"
|
||||
}
|
||||
checkLocked(statusCode).then((res: any) => {
|
||||
if (!res.data.data) {
|
||||
getMyTeacherNo().then((res: any) => {
|
||||
teacherNo.value = res.data.data
|
||||
handleWaitExam(val)
|
||||
})
|
||||
} else {
|
||||
message.warning("新增功能已锁定,暂不允许操作")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
const handleWaitExam = (val: number) => {
|
||||
materialUrlFrom.url = '/professional/file/teacherAboutInfoUpload'
|
||||
waitShenheForm.a = false
|
||||
waitShenheForm.b = false
|
||||
waitShenheForm.c = false
|
||||
waitShenheForm.d = false
|
||||
waitShenheForm.e = false
|
||||
waitShenheForm.f = false
|
||||
waitShenheForm.g = false
|
||||
|
||||
switch (val) {
|
||||
case 0:
|
||||
waitShenheForm.title = "教师资格证"
|
||||
waitShenheForm.a = true
|
||||
break
|
||||
case 1:
|
||||
waitShenheForm.title = "学历更新"
|
||||
waitShenheForm.b = true
|
||||
break
|
||||
case 2:
|
||||
waitShenheForm.title = "职称更新"
|
||||
waitShenheForm.c = true
|
||||
break
|
||||
case 3:
|
||||
waitShenheForm.title = "职业更新"
|
||||
waitShenheForm.d = true
|
||||
break
|
||||
case 4:
|
||||
waitShenheForm.title = "综合表彰"
|
||||
materialUrlFrom.fileListA = []
|
||||
waitShenheForm.form.honor = ''
|
||||
waitShenheForm.form.honorCompany = ''
|
||||
waitShenheForm.form.year = ''
|
||||
waitShenheForm.form.attachment = ''
|
||||
waitShenheForm.e = true
|
||||
break
|
||||
case 5:
|
||||
waitShenheForm.title = "人员调动"
|
||||
waitShenheForm.f = true
|
||||
waitShenheForm.form = { ...props.nowRow }
|
||||
waitShenheForm.form.newDeptCodeList = []
|
||||
waitShenheForm.form.deptCodeList = []
|
||||
newSecDeptCode.value = ''
|
||||
newSecChildDeptCode.value = ''
|
||||
getDeptListByLevelTwo().then((res: any) => {
|
||||
secDeptList.value = res.data.data
|
||||
educationDialogFromVisible.value = true
|
||||
})
|
||||
break
|
||||
case 6:
|
||||
waitShenheForm.title = "党员调动"
|
||||
waitShenheForm.form = { ...props.nowRow }
|
||||
waitShenheForm.form.oldBranchName = waitShenheForm.form.oldBranchId
|
||||
waitShenheForm.g = true
|
||||
break
|
||||
}
|
||||
materialUrlFrom.url = materialUrlFrom.url + "?teacherNo=" + teacherNo.value + "&type=" + val
|
||||
if (val != 5) {
|
||||
educationDialogFromVisible.value = true
|
||||
}
|
||||
}
|
||||
const materiaUploadSuccessA = (response: any, file: any, fileList: any) => {
|
||||
if (response.data.code == "-1") {
|
||||
message.error("当前不允许上传文件")
|
||||
return
|
||||
}
|
||||
waitShenheForm.form.mateA = response.data.url
|
||||
}
|
||||
|
||||
const materiaUploadSuccessB = (response: any, file: any, fileList: any) => {
|
||||
if (response.data.code == "-1") {
|
||||
message.error("当前不允许上传文件")
|
||||
return
|
||||
}
|
||||
waitShenheForm.form.mateB = response.data.url
|
||||
}
|
||||
|
||||
const materiaUploadSuccessC = (response: any, file: any, fileList: any) => {
|
||||
if (response.data.code == "-1") {
|
||||
message.error("当前不允许上传文件")
|
||||
return
|
||||
}
|
||||
waitShenheForm.form.mateC = response.data.url
|
||||
}
|
||||
const dialogSubmit = async (val: number) => {
|
||||
waitShenheForm.form.type = val
|
||||
waitShenheForm.form.teacherNo = teacherNo.value
|
||||
|
||||
// 表单验证
|
||||
let formRef: any = null
|
||||
|
||||
if (val == 0) {
|
||||
formRef = teacherCertificateFormRef.value
|
||||
if (undefined == waitShenheForm.form.mateA || waitShenheForm.form.mateA == "") {
|
||||
message.info("请上传资料")
|
||||
return
|
||||
}
|
||||
} else if (val == 1) {
|
||||
formRef = educationFormRef.value
|
||||
if ((undefined == waitShenheForm.form.mateA || waitShenheForm.form.mateA == "") && (undefined == waitShenheForm.form.mateB || waitShenheForm.form.mateB == "")) {
|
||||
message.info("请上传学历或学位证书")
|
||||
return
|
||||
}
|
||||
} else if (val == 2) {
|
||||
formRef = proFormRef.value
|
||||
if (undefined == waitShenheForm.form.mateA || waitShenheForm.form.mateA == "") {
|
||||
message.info("请上传证明材料")
|
||||
return
|
||||
}
|
||||
} else if (val == 3) {
|
||||
formRef = workFormRef.value
|
||||
if (undefined == waitShenheForm.form.mateA || waitShenheForm.form.mateA == "") {
|
||||
message.info("请上传资料")
|
||||
return
|
||||
}
|
||||
} else if (val == 4) {
|
||||
formRef = honorFormRef.value
|
||||
if (undefined == waitShenheForm.form.mateA || waitShenheForm.form.mateA == "") {
|
||||
message.info("请上传证明材料")
|
||||
return
|
||||
}
|
||||
} else if (val == 5) {
|
||||
formRef = stationChangeFormRef.value
|
||||
if (!newSecDeptCode.value) {
|
||||
message.info("请选择要调入的部门")
|
||||
return
|
||||
}
|
||||
waitShenheForm.form.newDeptCode = newSecDeptCode.value
|
||||
waitShenheForm.form.newSecDeptCode = newSecChildDeptCode.value ? newSecChildDeptCode.value : newSecDeptCode.value
|
||||
} else if (val == 6) {
|
||||
formRef = partChangeFormRef.value
|
||||
}
|
||||
|
||||
// 验证表单
|
||||
if (formRef) {
|
||||
try {
|
||||
await formRef.validate()
|
||||
} catch (err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
await messageBox.confirm('确认提交?')
|
||||
const res = await updateOtherInfo(waitShenheForm.form)
|
||||
if (res.data.data == '-1') {
|
||||
message.success("当前不允许提交")
|
||||
} else {
|
||||
message.success("提交成功")
|
||||
}
|
||||
emit("getList", props.page)
|
||||
educationDialogFromVisible.value = false
|
||||
} catch (err) {
|
||||
// 用户取消
|
||||
}
|
||||
}
|
||||
|
||||
const getDeptListByParent = () => {
|
||||
newSecChildDeptCode.value = ''
|
||||
newSecChildDeptCodeList.value = []
|
||||
getDeptListByParentApi(newSecDeptCode.value).then((res: any) => {
|
||||
newSecChildDeptCodeList.value = res.data.data
|
||||
})
|
||||
}
|
||||
|
||||
// 暴露方法
|
||||
defineExpose({
|
||||
init
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
92
src/views/professional/teacherbase/politics-dialog.vue
Normal file
92
src/views/professional/teacherbase/politics-dialog.vue
Normal file
@@ -0,0 +1,92 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" title="政治面貌" width="600px" @close="handleClose">
|
||||
<el-form :model="form" label-width="120px" ref="formRef">
|
||||
<el-form-item label="政治面貌" required>
|
||||
<el-select v-model="form.politicsStatusId" placeholder="请选择政治面貌" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in politicsStatusList"
|
||||
:key="item.id"
|
||||
:label="item.politicsStatus"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="加入时间" required>
|
||||
<el-date-picker
|
||||
v-model="form.joinTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正时间" required>
|
||||
<el-date-picker
|
||||
v-model="form.correctionTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
<el-button type="primary" @click="handleSubmit">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch } from 'vue'
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
formData?: any
|
||||
politicsStatusList?: any[]
|
||||
}
|
||||
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: boolean): void
|
||||
(e: 'submit', data: any): void
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
formData: () => ({}),
|
||||
politicsStatusList: () => []
|
||||
})
|
||||
|
||||
const emit = defineEmits<Emits>()
|
||||
|
||||
const visible = ref(false)
|
||||
const formRef = ref()
|
||||
const form = ref<any>({})
|
||||
|
||||
watch(() => props.modelValue, (val) => {
|
||||
visible.value = val
|
||||
if (val && props.formData) {
|
||||
form.value = { ...props.formData }
|
||||
} else {
|
||||
form.value = {}
|
||||
}
|
||||
})
|
||||
|
||||
watch(visible, (val) => {
|
||||
emit('update:modelValue', val)
|
||||
})
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
form.value = {}
|
||||
}
|
||||
|
||||
const handleSubmit = () => {
|
||||
emit('submit', { ...form.value })
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
113
src/views/professional/teacherbase/relation-dialog.vue
Normal file
113
src/views/professional/teacherbase/relation-dialog.vue
Normal file
@@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" title="社会关系" width="600px" @close="handleClose">
|
||||
<el-form :model="form" label-width="120px" ref="formRef">
|
||||
<el-form-item label="称谓" required>
|
||||
<el-select v-model="form.title" placeholder="请选择称谓" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in titleOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" required>
|
||||
<el-input v-model="form.realName" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出生年月" required>
|
||||
<el-date-picker
|
||||
v-model="form.birthday"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="政治面貌">
|
||||
<el-select v-model="form.politicsStatusId" placeholder="请选择政治面貌" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in politicsStatusList"
|
||||
:key="item.id"
|
||||
:label="item.politicsStatus"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作单位及职务">
|
||||
<el-input
|
||||
v-model="form.workStation"
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
placeholder="请输入工作单位及职务"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
<el-button type="primary" @click="handleSubmit">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch } from 'vue'
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
formData?: any
|
||||
politicsStatusList?: any[]
|
||||
}
|
||||
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: boolean): void
|
||||
(e: 'submit', data: any): void
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
formData: () => ({}),
|
||||
politicsStatusList: () => []
|
||||
})
|
||||
|
||||
const emit = defineEmits<Emits>()
|
||||
|
||||
const visible = ref(false)
|
||||
const formRef = ref()
|
||||
const form = ref<any>({})
|
||||
|
||||
// 称谓选项
|
||||
const titleOptions = [
|
||||
{ label: '父亲', value: '父亲' },
|
||||
{ label: '母亲', value: '母亲' },
|
||||
{ label: '配偶', value: '配偶' },
|
||||
{ label: '子女', value: '子女' },
|
||||
{ label: '兄弟姐妹', value: '兄弟姐妹' },
|
||||
{ label: '其他', value: '其他' }
|
||||
]
|
||||
|
||||
watch(() => props.modelValue, (val) => {
|
||||
visible.value = val
|
||||
if (val && props.formData) {
|
||||
form.value = { ...props.formData }
|
||||
} else {
|
||||
form.value = {}
|
||||
}
|
||||
})
|
||||
|
||||
watch(visible, (val) => {
|
||||
emit('update:modelValue', val)
|
||||
})
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
form.value = {}
|
||||
}
|
||||
|
||||
const handleSubmit = () => {
|
||||
emit('submit', { ...form.value })
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
214
src/views/professional/teacherbase/status-lock-dialog.vue
Normal file
214
src/views/professional/teacherbase/status-lock-dialog.vue
Normal file
@@ -0,0 +1,214 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
title="锁定状态管理"
|
||||
width="600px"
|
||||
class="status-lock-dialog"
|
||||
@close="handleClose">
|
||||
<div class="status-lock-content">
|
||||
<div class="status-lock-description">
|
||||
<el-icon class="status-lock-icon"><Lock /></el-icon>
|
||||
<span>请选择需要锁定的模块,锁定后将无法进行编辑操作</span>
|
||||
</div>
|
||||
|
||||
<el-form :model="form" label-width="120px" class="status-lock-form">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="职称管理">
|
||||
<el-switch
|
||||
inline-prompt
|
||||
v-model="form.title"
|
||||
active-text="已锁定"
|
||||
inactive-text="未锁定"
|
||||
active-color="#f56c6c"
|
||||
inactive-color="#67c23a">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="职业资格">
|
||||
<el-switch
|
||||
inline-prompt
|
||||
v-model="form.job"
|
||||
active-text="已锁定"
|
||||
inactive-text="未锁定"
|
||||
active-color="#f56c6c"
|
||||
inactive-color="#67c23a">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="教师资格证">
|
||||
<el-switch
|
||||
inline-prompt
|
||||
v-model="form.teacherTitle"
|
||||
active-text="已锁定"
|
||||
inactive-text="未锁定"
|
||||
active-color="#f56c6c"
|
||||
inactive-color="#67c23a">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学历学位">
|
||||
<el-switch
|
||||
inline-prompt
|
||||
v-model="form.acade"
|
||||
active-text="已锁定"
|
||||
inactive-text="未锁定"
|
||||
active-color="#f56c6c"
|
||||
inactive-color="#67c23a">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="综合表彰">
|
||||
<el-switch
|
||||
inline-prompt
|
||||
v-model="form.remix"
|
||||
active-text="已锁定"
|
||||
inactive-text="未锁定"
|
||||
active-color="#f56c6c"
|
||||
inactive-color="#67c23a">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="岗位晋升">
|
||||
<el-switch
|
||||
inline-prompt
|
||||
v-model="form.work"
|
||||
active-text="已锁定"
|
||||
inactive-text="未锁定"
|
||||
active-color="#f56c6c"
|
||||
inactive-color="#67c23a">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="status-lock-footer">
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="canEdit"
|
||||
@click="handleSubmit">保存</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch } from 'vue'
|
||||
import { Lock } from '@element-plus/icons-vue'
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
formData?: any
|
||||
canEdit?: boolean
|
||||
}
|
||||
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: boolean): void
|
||||
(e: 'submit', data: any): void
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
formData: () => ({
|
||||
title: false,
|
||||
job: true,
|
||||
teacherTitle: true,
|
||||
acade: true,
|
||||
remix: true,
|
||||
work: true
|
||||
}),
|
||||
canEdit: false
|
||||
})
|
||||
|
||||
const emit = defineEmits<Emits>()
|
||||
|
||||
const visible = ref(false)
|
||||
const form = ref<any>({
|
||||
title: false,
|
||||
job: true,
|
||||
teacherTitle: true,
|
||||
acade: true,
|
||||
remix: true,
|
||||
work: true
|
||||
})
|
||||
|
||||
watch(() => props.modelValue, (val) => {
|
||||
visible.value = val
|
||||
if (val && props.formData) {
|
||||
form.value = { ...props.formData }
|
||||
} else {
|
||||
form.value = {
|
||||
title: false,
|
||||
job: true,
|
||||
teacherTitle: true,
|
||||
acade: true,
|
||||
remix: true,
|
||||
work: true
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
watch(visible, (val) => {
|
||||
emit('update:modelValue', val)
|
||||
})
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
}
|
||||
|
||||
const handleSubmit = () => {
|
||||
emit('submit', { ...form.value })
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.status-lock-dialog {
|
||||
.status-lock-content {
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
.status-lock-description {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 16px;
|
||||
margin-bottom: 24px;
|
||||
background: #fef0f0;
|
||||
border: 1px solid #fbc4c4;
|
||||
border-radius: 6px;
|
||||
color: #f56c6c;
|
||||
font-size: 14px;
|
||||
|
||||
.status-lock-icon {
|
||||
margin-right: 8px;
|
||||
font-size: 18px;
|
||||
color: #f56c6c;
|
||||
}
|
||||
}
|
||||
|
||||
.status-lock-form {
|
||||
:deep(.el-form-item) {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.status-lock-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user