fix
This commit is contained in:
@@ -224,12 +224,12 @@ const exportTeacherInfo = async () => {
|
||||
teacherBaseDTO: searchData,
|
||||
};
|
||||
|
||||
makeExportTeacherInfoBySelfTask(params).then((res:any)=>{
|
||||
ElNotification.success({
|
||||
title: '下载后台进行中',
|
||||
message: '操作成功'
|
||||
})
|
||||
});
|
||||
makeExportTeacherInfoBySelfTask(params).then((res: any) => {
|
||||
ElNotification.success({
|
||||
title: '下载后台进行中',
|
||||
message: '操作成功',
|
||||
});
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
exportLoading.value = false;
|
||||
|
||||
@@ -1,100 +1,93 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" title="导入职工信息" width="600" append-to-body>
|
||||
<el-alert
|
||||
type="warning"
|
||||
:closable="false"
|
||||
show-icon
|
||||
style="margin-bottom: 20px;">
|
||||
<template #title>
|
||||
<span> 可先导出教职工信息,按照导出信息的模板填入职工数据,再执行导入</span>
|
||||
</template>
|
||||
</el-alert>
|
||||
<el-dialog v-model="visible" title="导入职工信息" width="600" append-to-body>
|
||||
<el-alert type="warning" :closable="false" show-icon style="margin-bottom: 20px">
|
||||
<template #title>
|
||||
<span> 可先导出教职工信息,按照导出信息的模板填入职工数据,再执行导入</span>
|
||||
</template>
|
||||
</el-alert>
|
||||
|
||||
<!-- <div style="text-align: center; margin-bottom: 20px;">-->
|
||||
<!-- <a href="excel/dictlist.xlsx" rel="external nofollow" download="职工信息字典下载" style="text-decoration: none;">-->
|
||||
<!-- <el-button type="success" :icon="Download">下载字典文件</el-button>-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div style="text-align: center; margin-bottom: 20px;">-->
|
||||
<!-- <a href="excel/dictlist.xlsx" rel="external nofollow" download="职工信息字典下载" style="text-decoration: none;">-->
|
||||
<!-- <el-button type="success" :icon="Download">下载字典文件</el-button>-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
class="upload-demo"
|
||||
action="/professional/file/makeImportTeacherInfoSimpleTask"
|
||||
:headers="headers"
|
||||
:accept="'.xls,.xlsx'"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-error="handleAvatarError"
|
||||
:limit="1"
|
||||
drag>
|
||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||
<div class="el-upload__text">
|
||||
将文件拖到此处,或<em>点击上传</em>
|
||||
</div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">
|
||||
只能上传 .xls 或 .xlsx 格式的 Excel 文件
|
||||
</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
class="upload-demo"
|
||||
action="/professional/file/makeImportTeacherInfoSimpleTask"
|
||||
:headers="headers"
|
||||
:accept="'.xls,.xlsx'"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-error="handleAvatarError"
|
||||
:limit="1"
|
||||
drag
|
||||
>
|
||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">只能上传 .xls 或 .xlsx 格式的 Excel 文件</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, nextTick } from 'vue'
|
||||
import { ElNotification } from 'element-plus'
|
||||
import { Download, UploadFilled } from '@element-plus/icons-vue'
|
||||
import { Session } from '/@/utils/storage'
|
||||
import { ref, computed, nextTick } from 'vue';
|
||||
import { ElNotification } from 'element-plus';
|
||||
import { Download, UploadFilled } from '@element-plus/icons-vue';
|
||||
import { Session } from '/@/utils/storage';
|
||||
|
||||
// 响应式数据
|
||||
const visible = ref(false)
|
||||
// 响应式数据
|
||||
const visible = ref(false);
|
||||
|
||||
// 计算属性
|
||||
const headers = computed(() => {
|
||||
return {
|
||||
"Authorization": 'Bearer ' + Session.getToken()
|
||||
}
|
||||
})
|
||||
// 计算属性
|
||||
const headers = computed(() => {
|
||||
return {
|
||||
Authorization: 'Bearer ' + Session.getToken(),
|
||||
};
|
||||
});
|
||||
|
||||
const uploadRef = ref<{ clearFiles?: () => void }>()
|
||||
const uploadRef = ref<{ clearFiles?: () => void }>();
|
||||
|
||||
// 方法
|
||||
const init = () => {
|
||||
visible.value = true
|
||||
nextTick(() => {
|
||||
uploadRef.value?.clearFiles?.()
|
||||
})
|
||||
}
|
||||
// 方法
|
||||
const init = () => {
|
||||
visible.value = true;
|
||||
nextTick(() => {
|
||||
uploadRef.value?.clearFiles?.();
|
||||
});
|
||||
};
|
||||
|
||||
const handleUploadSuccess = () => {
|
||||
visible.value = false
|
||||
ElNotification({
|
||||
title: '成功',
|
||||
message: '导入成功',
|
||||
type: 'success',
|
||||
})
|
||||
}
|
||||
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
|
||||
})
|
||||
}
|
||||
}
|
||||
const handleAvatarError = (err: any) => {
|
||||
const result = JSON.parse(err.message);
|
||||
if (result.code == '1') {
|
||||
ElNotification.error({
|
||||
title: '错误',
|
||||
message: result.msg,
|
||||
duration: 30000,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 暴露方法给父组件
|
||||
defineExpose({
|
||||
init
|
||||
})
|
||||
// 暴露方法给父组件
|
||||
defineExpose({
|
||||
init,
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.upload-demo {
|
||||
:deep(.el-upload-dragger) {
|
||||
width: 100%;
|
||||
}
|
||||
:deep(.el-upload-dragger) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,383 +1,359 @@
|
||||
<template>
|
||||
<el-dialog v-model="dialogVisible" width="600" :title="waitShenheForm.title" append-to-body>
|
||||
<!--人员调动-->
|
||||
<el-form v-if="waitShenheForm.isPersonnelTransfer" ref="stationChangeFormRef" :model="waitShenheForm.form" :rules="stationChangeRules" label-width="120px">
|
||||
<el-form-item label="工号 / 姓名">
|
||||
<el-tag>{{waitShenheForm.form.teacherNo}} - {{waitShenheForm.form.realName}}</el-tag>
|
||||
</el-form-item>
|
||||
<el-dialog v-model="dialogVisible" width="600" :title="waitShenheForm.title" append-to-body>
|
||||
<!--人员调动-->
|
||||
<el-form
|
||||
v-if="waitShenheForm.isPersonnelTransfer"
|
||||
ref="stationChangeFormRef"
|
||||
:model="waitShenheForm.form"
|
||||
:rules="stationChangeRules"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-form-item label="工号 / 姓名">
|
||||
<el-tag>{{ waitShenheForm.form.teacherNo }} - {{ waitShenheForm.form.realName }}</el-tag>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="原部门名称">
|
||||
<el-input v-model="waitShenheForm.form.deptName" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="现二级部门" prop="newDeptCode">
|
||||
<el-select v-model="newSecDeptCode" @change="getDeptListByParent" placeholder="请选择二级部门">
|
||||
<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-input v-model="waitShenheForm.form.deptName" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="现二级部门" prop="newDeptCode">
|
||||
<el-select v-model="newSecDeptCode" @change="getDeptListByParent" placeholder="请选择二级部门">
|
||||
<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"
|
||||
/>
|
||||
</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>
|
||||
<div style="text-align: right; width: 100%;">
|
||||
<el-button type="primary" @click="dialogSubmit(5)">提交</el-button>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--党员调动-->
|
||||
<el-form v-if="waitShenheForm.isPartyTransfer" ref="partChangeFormRef" :model="waitShenheForm.form" :rules="partChangeRules" label-width="120px">
|
||||
<el-form-item label="工号 / 用户名">
|
||||
<el-tag>{{waitShenheForm.form.teacherNo}} - {{waitShenheForm.form.realName}}</el-tag>
|
||||
</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="原支部名">
|
||||
<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="changeDate">
|
||||
<el-date-picker v-model="waitShenheForm.form.changeDate" type="date" placeholder="选择日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
||||
</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"
|
||||
/>
|
||||
</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>
|
||||
<div style="text-align: right; width: 100%;">
|
||||
<el-button type="primary" @click="dialogSubmit(6)">提交</el-button>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
<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>
|
||||
<div style="text-align: right; width: 100%">
|
||||
<el-button type="primary" @click="dialogSubmit(5)">提交</el-button>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!--党员调动-->
|
||||
<el-form v-if="waitShenheForm.isPartyTransfer" ref="partChangeFormRef" :model="waitShenheForm.form" :rules="partChangeRules" label-width="120px">
|
||||
<el-form-item label="工号 / 用户名">
|
||||
<el-tag>{{ waitShenheForm.form.teacherNo }} - {{ 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"
|
||||
/>
|
||||
</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>
|
||||
<div style="text-align: right; width: 100%">
|
||||
<el-button type="primary" @click="dialogSubmit(6)">提交</el-button>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, nextTick } from 'vue'
|
||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||
import { getAllInfoAboutList } from '/@/api/professional/professionaluser/teacherbase'
|
||||
import { getDeptListByLevelTwo, getDeptListByParent as getDeptListByParentApi } from '/@/api/basic/basicdept'
|
||||
import { addObj as addStationChangeObj } from '/@/api/professional/professionaluser/professionalteacherstationchange'
|
||||
import { addObj as addPartyChangeObj } from '/@/api/professional/professionaluser/professionalpartychange'
|
||||
import global from '/@/components/tools/commondict.vue'
|
||||
import type { Pagination } from '/@/hooks/table'
|
||||
import { ref, reactive, nextTick } from 'vue';
|
||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||
import { getAllInfoAboutList } from '/@/api/professional/professionaluser/teacherbase';
|
||||
import { getDeptListByLevelTwo, getDeptListByParent as getDeptListByParentApi } from '/@/api/basic/basicdept';
|
||||
import { addObj as addStationChangeObj } from '/@/api/professional/professionaluser/professionalteacherstationchange';
|
||||
import { addObj as addPartyChangeObj } from '/@/api/professional/professionaluser/professionalpartychange';
|
||||
import global from '/@/components/tools/commondict.vue';
|
||||
import type { Pagination } from '/@/hooks/table';
|
||||
|
||||
// 表单类型常量
|
||||
const FORM_TYPE = {
|
||||
PERSONNEL_TRANSFER: 5, // 人员调动
|
||||
PARTY_TRANSFER: 6 // 党员调动
|
||||
} as const
|
||||
// 表单类型常量
|
||||
const FORM_TYPE = {
|
||||
PERSONNEL_TRANSFER: 5, // 人员调动
|
||||
PARTY_TRANSFER: 6, // 党员调动
|
||||
} as const;
|
||||
|
||||
// 类型定义
|
||||
interface FormData {
|
||||
newDeptCodeList?: any[]
|
||||
deptCodeList?: any[]
|
||||
teacherNo?: string
|
||||
realName?: string
|
||||
userName?: string
|
||||
deptName?: string
|
||||
id?: string
|
||||
oldBranchId?: string
|
||||
oldBranchName?: string
|
||||
newDeptCode?: string
|
||||
newSecDeptCode?: string
|
||||
changeDate?: string
|
||||
pos?: string
|
||||
remarks?: string
|
||||
branchName?: string
|
||||
partyFee?: number
|
||||
changeTime?: string
|
||||
[key: string]: any
|
||||
}
|
||||
// 类型定义
|
||||
interface FormData {
|
||||
newDeptCodeList?: any[];
|
||||
deptCodeList?: any[];
|
||||
teacherNo?: string;
|
||||
realName?: string;
|
||||
userName?: string;
|
||||
deptName?: string;
|
||||
id?: string;
|
||||
oldBranchId?: string;
|
||||
oldBranchName?: string;
|
||||
newDeptCode?: string;
|
||||
newSecDeptCode?: string;
|
||||
changeDate?: string;
|
||||
pos?: string;
|
||||
remarks?: string;
|
||||
branchName?: string;
|
||||
partyFee?: number;
|
||||
changeTime?: string;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
interface WaitShenheForm {
|
||||
form: FormData
|
||||
title: string
|
||||
isPersonnelTransfer: boolean
|
||||
isPartyTransfer: boolean
|
||||
}
|
||||
interface WaitShenheForm {
|
||||
form: FormData;
|
||||
title: string;
|
||||
isPersonnelTransfer: boolean;
|
||||
isPartyTransfer: boolean;
|
||||
}
|
||||
|
||||
// 表单 ref
|
||||
const stationChangeFormRef = ref()
|
||||
const partChangeFormRef = ref()
|
||||
|
||||
// 人员调动验证规则
|
||||
const stationChangeRules = {
|
||||
newDeptCode: [{ required: true, message: '请选择要调入的二级部门', trigger: 'blur' }],
|
||||
changeDate: [{ required: true, message: '请选择调令日期', trigger: 'blur' }],
|
||||
pos: [{ required: true, message: '请选择岗位类型', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
// 党员调动验证规则
|
||||
const partChangeRules = {
|
||||
branchName: [{ required: true, message: '请选择现支部', trigger: 'blur' }],
|
||||
changeTime: [{ required: true, message: '请选择变动时间', trigger: 'blur' }]
|
||||
}
|
||||
// 表单 ref
|
||||
const stationChangeFormRef = ref();
|
||||
const partChangeFormRef = ref();
|
||||
|
||||
/**
|
||||
* 定义Props
|
||||
* @param page 分页信息
|
||||
* @param nowRow 当前行数据
|
||||
*/
|
||||
const props = defineProps<{
|
||||
page?: Pagination
|
||||
nowRow: Record<string, any>
|
||||
}>()
|
||||
// 人员调动验证规则
|
||||
const stationChangeRules = {
|
||||
newDeptCode: [{ required: true, message: '请选择要调入的二级部门', trigger: 'blur' }],
|
||||
changeDate: [{ required: true, message: '请选择调令日期', trigger: 'blur' }],
|
||||
pos: [{ required: true, message: '请选择岗位类型', trigger: 'blur' }],
|
||||
};
|
||||
|
||||
/**
|
||||
* 定义Emits
|
||||
*/
|
||||
const emit = defineEmits<{
|
||||
(e: 'getList', page?: Pagination): void
|
||||
}>()
|
||||
// 党员调动验证规则
|
||||
const partChangeRules = {
|
||||
branchName: [{ required: true, message: '请选择现支部', trigger: 'blur' }],
|
||||
changeTime: [{ required: true, message: '请选择变动时间', trigger: 'blur' }],
|
||||
};
|
||||
|
||||
// 消息提示 hooks
|
||||
const message = useMessage()
|
||||
const messageBox = useMessageBox()
|
||||
/**
|
||||
* 定义Props
|
||||
* @param page 分页信息
|
||||
* @param nowRow 当前行数据
|
||||
*/
|
||||
const props = defineProps<{
|
||||
page?: Pagination;
|
||||
nowRow: Record<string, any>;
|
||||
}>();
|
||||
|
||||
// 响应式数据
|
||||
const dialogVisible = ref(false)
|
||||
|
||||
/**
|
||||
* 等待审核表单
|
||||
*/
|
||||
const waitShenheForm = reactive<WaitShenheForm>({
|
||||
form: {
|
||||
newDeptCodeList: [],
|
||||
deptCodeList: []
|
||||
},
|
||||
title: '',
|
||||
isPersonnelTransfer: false,
|
||||
isPartyTransfer: false
|
||||
})
|
||||
|
||||
const baseInfoAbout = reactive({
|
||||
partBranchList: [] as any[]
|
||||
})
|
||||
|
||||
const secDeptList = ref<any[]>([])
|
||||
const newSecChildDeptCodeList = ref<any[]>([])
|
||||
const newSecDeptCode = ref('')
|
||||
const newSecChildDeptCode = ref('')
|
||||
const teacherNo = ref('')
|
||||
/**
|
||||
* 定义Emits
|
||||
*/
|
||||
const emit = defineEmits<{
|
||||
(e: 'getList', page?: Pagination): void;
|
||||
}>();
|
||||
|
||||
// 方法定义
|
||||
/**
|
||||
* 初始化字典数据
|
||||
*/
|
||||
const initDicData = async () => {
|
||||
const response = await getAllInfoAboutList()
|
||||
const map = response.data
|
||||
baseInfoAbout.partBranchList = map['partBranchList'] || []
|
||||
}
|
||||
// 消息提示 hooks
|
||||
const message = useMessage();
|
||||
const messageBox = useMessageBox();
|
||||
|
||||
/**
|
||||
* 初始化对话框
|
||||
* @param val 表单类型:5-人员调动,6-党员调动
|
||||
*/
|
||||
const init = async (val: number) => {
|
||||
if (val !== FORM_TYPE.PERSONNEL_TRANSFER && val !== FORM_TYPE.PARTY_TRANSFER) {
|
||||
return
|
||||
}
|
||||
|
||||
await initDicData()
|
||||
teacherNo.value = props.nowRow.teacherNo
|
||||
handleFormType(val)
|
||||
}
|
||||
// 响应式数据
|
||||
const dialogVisible = ref(false);
|
||||
|
||||
/**
|
||||
* 处理表单类型显示
|
||||
* @param val 表单类型
|
||||
*/
|
||||
const handleFormType = (val: number) => {
|
||||
// 重置所有表单状态
|
||||
waitShenheForm.isPersonnelTransfer = false
|
||||
waitShenheForm.isPartyTransfer = false
|
||||
|
||||
if (val === FORM_TYPE.PERSONNEL_TRANSFER) {
|
||||
// 人员调动:加载部门数据
|
||||
waitShenheForm.title = "人员调动"
|
||||
waitShenheForm.isPersonnelTransfer = true
|
||||
waitShenheForm.form = { ...props.nowRow }
|
||||
waitShenheForm.form.id = ''
|
||||
waitShenheForm.form.newDeptCodeList = []
|
||||
waitShenheForm.form.deptCodeList = []
|
||||
newSecDeptCode.value = ''
|
||||
newSecChildDeptCode.value = ''
|
||||
|
||||
getDeptListByLevelTwo().then((res: any) => {
|
||||
secDeptList.value = res.data || []
|
||||
dialogVisible.value = true
|
||||
// 弹窗打开后,清除表单验证状态,避免立即显示验证提示
|
||||
nextTick(() => {
|
||||
stationChangeFormRef.value?.clearValidate()
|
||||
})
|
||||
})
|
||||
} else if (val === FORM_TYPE.PARTY_TRANSFER) {
|
||||
// 党员调动:设置原支部
|
||||
waitShenheForm.title = "党员调动"
|
||||
waitShenheForm.isPartyTransfer = true
|
||||
waitShenheForm.form = { ...props.nowRow }
|
||||
waitShenheForm.form.id = ''
|
||||
waitShenheForm.form.realName = waitShenheForm.form.userName || waitShenheForm.form.realName
|
||||
waitShenheForm.form.oldBranchName = waitShenheForm.form.oldBranchId
|
||||
dialogVisible.value = true
|
||||
// 弹窗打开后,清除表单验证状态,避免立即显示验证提示
|
||||
nextTick(() => {
|
||||
partChangeFormRef.value?.clearValidate()
|
||||
})
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 提交表单
|
||||
* @param val 表单类型:5-人员调动,6-党员调动
|
||||
*/
|
||||
const dialogSubmit = async (val: number) => {
|
||||
if (val !== FORM_TYPE.PERSONNEL_TRANSFER && val !== FORM_TYPE.PARTY_TRANSFER) {
|
||||
return
|
||||
}
|
||||
/**
|
||||
* 等待审核表单
|
||||
*/
|
||||
const waitShenheForm = reactive<WaitShenheForm>({
|
||||
form: {
|
||||
newDeptCodeList: [],
|
||||
deptCodeList: [],
|
||||
},
|
||||
title: '',
|
||||
isPersonnelTransfer: false,
|
||||
isPartyTransfer: false,
|
||||
});
|
||||
|
||||
waitShenheForm.form.teacherNo = teacherNo.value
|
||||
const baseInfoAbout = reactive({
|
||||
partBranchList: [] as any[],
|
||||
});
|
||||
|
||||
// 表单验证配置
|
||||
const formRefMap: Record<number, any> = {
|
||||
[FORM_TYPE.PERSONNEL_TRANSFER]: stationChangeFormRef.value,
|
||||
[FORM_TYPE.PARTY_TRANSFER]: partChangeFormRef.value
|
||||
}
|
||||
|
||||
const formRef = formRefMap[val]
|
||||
|
||||
// 人员调动:在验证前同步数据
|
||||
if (val === FORM_TYPE.PERSONNEL_TRANSFER) {
|
||||
waitShenheForm.form.newDeptCode = newSecDeptCode.value
|
||||
waitShenheForm.form.newSecDeptCode = newSecChildDeptCode.value || newSecDeptCode.value
|
||||
}
|
||||
const secDeptList = ref<any[]>([]);
|
||||
const newSecChildDeptCodeList = ref<any[]>([]);
|
||||
const newSecDeptCode = ref('');
|
||||
const newSecChildDeptCode = ref('');
|
||||
const teacherNo = ref('');
|
||||
|
||||
// 验证表单
|
||||
if (formRef) {
|
||||
try {
|
||||
await formRef.validate()
|
||||
} catch (err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
// 方法定义
|
||||
/**
|
||||
* 初始化字典数据
|
||||
*/
|
||||
const initDicData = async () => {
|
||||
const response = await getAllInfoAboutList();
|
||||
const map = response.data;
|
||||
baseInfoAbout.partBranchList = map['partBranchList'] || [];
|
||||
};
|
||||
|
||||
// 先确认,用户取消时不执行后续操作
|
||||
try {
|
||||
await messageBox.confirm('确认提交?')
|
||||
} catch (err: any) {
|
||||
// 用户取消操作,直接返回,不显示错误提示
|
||||
return
|
||||
}
|
||||
|
||||
// 用户确认后,执行提交操作
|
||||
try {
|
||||
let res: any
|
||||
|
||||
if (val === FORM_TYPE.PERSONNEL_TRANSFER) {
|
||||
// 人员调动:使用人员调动接口
|
||||
res = await addStationChangeObj(waitShenheForm.form)
|
||||
} else if (val === FORM_TYPE.PARTY_TRANSFER) {
|
||||
// 党员调动:使用党员调动接口
|
||||
res = await addPartyChangeObj(waitShenheForm.form)
|
||||
}
|
||||
|
||||
if (res && res.data === '-1') {
|
||||
message.warning("当前不允许提交")
|
||||
} else if (res) {
|
||||
message.success("提交成功")
|
||||
emit("getList", props.page)
|
||||
dialogVisible.value = false
|
||||
}
|
||||
} catch (err: any) {
|
||||
// 处理业务错误
|
||||
message.error(err.msg)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 初始化对话框
|
||||
* @param val 表单类型:5-人员调动,6-党员调动
|
||||
*/
|
||||
const init = async (val: number) => {
|
||||
if (val !== FORM_TYPE.PERSONNEL_TRANSFER && val !== FORM_TYPE.PARTY_TRANSFER) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子部门列表
|
||||
*/
|
||||
const getDeptListByParent = async () => {
|
||||
newSecChildDeptCode.value = ''
|
||||
newSecChildDeptCodeList.value = []
|
||||
|
||||
if (!newSecDeptCode.value) {
|
||||
return
|
||||
}
|
||||
|
||||
const res = await getDeptListByParentApi(newSecDeptCode.value)
|
||||
newSecChildDeptCodeList.value = res.data || []
|
||||
}
|
||||
await initDicData();
|
||||
teacherNo.value = props.nowRow.teacherNo;
|
||||
handleFormType(val);
|
||||
};
|
||||
|
||||
// 暴露方法
|
||||
defineExpose({
|
||||
init
|
||||
})
|
||||
/**
|
||||
* 处理表单类型显示
|
||||
* @param val 表单类型
|
||||
*/
|
||||
const handleFormType = (val: number) => {
|
||||
// 重置所有表单状态
|
||||
waitShenheForm.isPersonnelTransfer = false;
|
||||
waitShenheForm.isPartyTransfer = false;
|
||||
|
||||
if (val === FORM_TYPE.PERSONNEL_TRANSFER) {
|
||||
// 人员调动:加载部门数据
|
||||
waitShenheForm.title = '人员调动';
|
||||
waitShenheForm.isPersonnelTransfer = true;
|
||||
waitShenheForm.form = { ...props.nowRow };
|
||||
waitShenheForm.form.id = '';
|
||||
waitShenheForm.form.newDeptCodeList = [];
|
||||
waitShenheForm.form.deptCodeList = [];
|
||||
newSecDeptCode.value = '';
|
||||
newSecChildDeptCode.value = '';
|
||||
|
||||
getDeptListByLevelTwo().then((res: any) => {
|
||||
secDeptList.value = res.data || [];
|
||||
dialogVisible.value = true;
|
||||
// 弹窗打开后,清除表单验证状态,避免立即显示验证提示
|
||||
nextTick(() => {
|
||||
stationChangeFormRef.value?.clearValidate();
|
||||
});
|
||||
});
|
||||
} else if (val === FORM_TYPE.PARTY_TRANSFER) {
|
||||
// 党员调动:设置原支部
|
||||
waitShenheForm.title = '党员调动';
|
||||
waitShenheForm.isPartyTransfer = true;
|
||||
waitShenheForm.form = { ...props.nowRow };
|
||||
waitShenheForm.form.id = '';
|
||||
waitShenheForm.form.realName = waitShenheForm.form.userName || waitShenheForm.form.realName;
|
||||
waitShenheForm.form.oldBranchName = waitShenheForm.form.oldBranchId;
|
||||
dialogVisible.value = true;
|
||||
// 弹窗打开后,清除表单验证状态,避免立即显示验证提示
|
||||
nextTick(() => {
|
||||
partChangeFormRef.value?.clearValidate();
|
||||
});
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 提交表单
|
||||
* @param val 表单类型:5-人员调动,6-党员调动
|
||||
*/
|
||||
const dialogSubmit = async (val: number) => {
|
||||
if (val !== FORM_TYPE.PERSONNEL_TRANSFER && val !== FORM_TYPE.PARTY_TRANSFER) {
|
||||
return;
|
||||
}
|
||||
|
||||
waitShenheForm.form.teacherNo = teacherNo.value;
|
||||
|
||||
// 表单验证配置
|
||||
const formRefMap: Record<number, any> = {
|
||||
[FORM_TYPE.PERSONNEL_TRANSFER]: stationChangeFormRef.value,
|
||||
[FORM_TYPE.PARTY_TRANSFER]: partChangeFormRef.value,
|
||||
};
|
||||
|
||||
const formRef = formRefMap[val];
|
||||
|
||||
// 人员调动:在验证前同步数据
|
||||
if (val === FORM_TYPE.PERSONNEL_TRANSFER) {
|
||||
waitShenheForm.form.newDeptCode = newSecDeptCode.value;
|
||||
waitShenheForm.form.newSecDeptCode = newSecChildDeptCode.value || newSecDeptCode.value;
|
||||
}
|
||||
|
||||
// 验证表单
|
||||
if (formRef) {
|
||||
try {
|
||||
await formRef.validate();
|
||||
} catch (err) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 先确认,用户取消时不执行后续操作
|
||||
try {
|
||||
await messageBox.confirm('确认提交?');
|
||||
} catch (err: any) {
|
||||
// 用户取消操作,直接返回,不显示错误提示
|
||||
return;
|
||||
}
|
||||
|
||||
// 用户确认后,执行提交操作
|
||||
try {
|
||||
let res: any;
|
||||
|
||||
if (val === FORM_TYPE.PERSONNEL_TRANSFER) {
|
||||
// 人员调动:使用人员调动接口
|
||||
res = await addStationChangeObj(waitShenheForm.form);
|
||||
} else if (val === FORM_TYPE.PARTY_TRANSFER) {
|
||||
// 党员调动:使用党员调动接口
|
||||
res = await addPartyChangeObj(waitShenheForm.form);
|
||||
}
|
||||
|
||||
if (res && res.data === '-1') {
|
||||
message.warning('当前不允许提交');
|
||||
} else if (res) {
|
||||
message.success('提交成功');
|
||||
emit('getList', props.page);
|
||||
dialogVisible.value = false;
|
||||
}
|
||||
} catch (err: any) {
|
||||
// 处理业务错误
|
||||
message.error(err.msg);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取子部门列表
|
||||
*/
|
||||
const getDeptListByParent = async () => {
|
||||
newSecChildDeptCode.value = '';
|
||||
newSecChildDeptCodeList.value = [];
|
||||
|
||||
if (!newSecDeptCode.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
const res = await getDeptListByParentApi(newSecDeptCode.value);
|
||||
newSecChildDeptCodeList.value = res.data || [];
|
||||
};
|
||||
|
||||
// 暴露方法
|
||||
defineExpose({
|
||||
init,
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,92 +1,88 @@
|
||||
<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>
|
||||
<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'
|
||||
import { ref, watch } from 'vue';
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
formData?: any
|
||||
politicsStatusList?: any[]
|
||||
modelValue: boolean;
|
||||
formData?: any;
|
||||
politicsStatusList?: any[];
|
||||
}
|
||||
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: boolean): void
|
||||
(e: 'submit', data: any): void
|
||||
(e: 'update:modelValue', value: boolean): void;
|
||||
(e: 'submit', data: any): void;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
formData: () => ({}),
|
||||
politicsStatusList: () => []
|
||||
})
|
||||
formData: () => ({}),
|
||||
politicsStatusList: () => [],
|
||||
});
|
||||
|
||||
const emit = defineEmits<Emits>()
|
||||
const emit = defineEmits<Emits>();
|
||||
|
||||
const visible = ref(false)
|
||||
const formRef = ref()
|
||||
const form = ref<any>({})
|
||||
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(
|
||||
() => props.modelValue,
|
||||
(val) => {
|
||||
visible.value = val;
|
||||
if (val && props.formData) {
|
||||
form.value = { ...props.formData };
|
||||
} else {
|
||||
form.value = {};
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
watch(visible, (val) => {
|
||||
emit('update:modelValue', val)
|
||||
})
|
||||
emit('update:modelValue', val);
|
||||
});
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
form.value = {}
|
||||
}
|
||||
visible.value = false;
|
||||
form.value = {};
|
||||
};
|
||||
|
||||
const handleSubmit = () => {
|
||||
emit('submit', { ...form.value })
|
||||
}
|
||||
emit('submit', { ...form.value });
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
<style scoped></style>
|
||||
|
||||
@@ -1,136 +1,112 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" title="社会关系" width="600px" @close="handleClose">
|
||||
<el-form :model="form" :rules="rules" label-width="130px" ref="formRef">
|
||||
<el-form-item label="称谓" prop="title" 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="姓名" prop="realName" required>
|
||||
<el-input v-model="form.realName" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出生年月" prop="birthday" 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="政治面貌" prop="politicsStatusId" 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="工作单位及职务" prop="workStation" required>
|
||||
<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>
|
||||
<el-dialog v-model="visible" title="社会关系" width="600px" @close="handleClose">
|
||||
<el-form :model="form" :rules="rules" label-width="130px" ref="formRef">
|
||||
<el-form-item label="称谓" prop="title" 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="姓名" prop="realName" required>
|
||||
<el-input v-model="form.realName" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出生年月" prop="birthday" 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="政治面貌" prop="politicsStatusId" 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="工作单位及职务" prop="workStation" required>
|
||||
<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'
|
||||
import { ref, watch } from 'vue';
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
formData?: any
|
||||
politicsStatusList?: any[]
|
||||
modelValue: boolean;
|
||||
formData?: any;
|
||||
politicsStatusList?: any[];
|
||||
}
|
||||
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: boolean): void
|
||||
(e: 'submit', data: any): void
|
||||
(e: 'update:modelValue', value: boolean): void;
|
||||
(e: 'submit', data: any): void;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
formData: () => ({}),
|
||||
politicsStatusList: () => []
|
||||
})
|
||||
formData: () => ({}),
|
||||
politicsStatusList: () => [],
|
||||
});
|
||||
|
||||
const emit = defineEmits<Emits>()
|
||||
const emit = defineEmits<Emits>();
|
||||
|
||||
const visible = ref(false)
|
||||
const formRef = ref()
|
||||
const form = ref<any>({})
|
||||
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: '其他' }
|
||||
]
|
||||
{ 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(
|
||||
() => props.modelValue,
|
||||
(val) => {
|
||||
visible.value = val;
|
||||
if (val && props.formData) {
|
||||
form.value = { ...props.formData };
|
||||
} else {
|
||||
form.value = {};
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
watch(visible, (val) => {
|
||||
emit('update:modelValue', val)
|
||||
})
|
||||
emit('update:modelValue', val);
|
||||
});
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
form.value = {}
|
||||
}
|
||||
visible.value = false;
|
||||
form.value = {};
|
||||
};
|
||||
|
||||
const handleSubmit = () => {
|
||||
formRef.value?.validate((valid: boolean) => {
|
||||
if (valid) {
|
||||
emit('submit', { ...form.value })
|
||||
}
|
||||
})
|
||||
}
|
||||
formRef.value?.validate((valid: boolean) => {
|
||||
if (valid) {
|
||||
emit('submit', { ...form.value });
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 表单验证规则
|
||||
const rules = {
|
||||
title: [
|
||||
{ required: true, message: '请选择称谓', trigger: 'change' }
|
||||
],
|
||||
realName: [
|
||||
{ required: true, message: '请输入姓名', trigger: 'blur' }
|
||||
],
|
||||
birthday: [
|
||||
{ required: true, message: '请选择出生年月', trigger: 'change' }
|
||||
],
|
||||
politicsStatusId: [
|
||||
{ required: true, message: '请选择政治面貌', trigger: 'change' }
|
||||
],
|
||||
workStation: [
|
||||
{ required: true, message: '请输入工作单位及职务', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
title: [{ required: true, message: '请选择称谓', trigger: 'change' }],
|
||||
realName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
|
||||
birthday: [{ required: true, message: '请选择出生年月', trigger: 'change' }],
|
||||
politicsStatusId: [{ required: true, message: '请选择政治面貌', trigger: 'change' }],
|
||||
workStation: [{ required: true, message: '请输入工作单位及职务', trigger: 'blur' }],
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
<style scoped></style>
|
||||
|
||||
@@ -1,214 +1,207 @@
|
||||
<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-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-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-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.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.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.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.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.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.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.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>
|
||||
<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'
|
||||
import { ref, watch } from 'vue';
|
||||
import { Lock } from '@element-plus/icons-vue';
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
formData?: any
|
||||
canEdit?: boolean
|
||||
modelValue: boolean;
|
||||
formData?: any;
|
||||
canEdit?: boolean;
|
||||
}
|
||||
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: boolean): void
|
||||
(e: 'submit', data: any): void
|
||||
(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
|
||||
})
|
||||
formData: () => ({
|
||||
title: false,
|
||||
job: true,
|
||||
teacherTitle: true,
|
||||
acade: true,
|
||||
remix: true,
|
||||
work: true,
|
||||
}),
|
||||
canEdit: false,
|
||||
});
|
||||
|
||||
const emit = defineEmits<Emits>()
|
||||
const emit = defineEmits<Emits>();
|
||||
|
||||
const visible = ref(false)
|
||||
const visible = ref(false);
|
||||
const form = ref<any>({
|
||||
title: false,
|
||||
job: true,
|
||||
teacherTitle: true,
|
||||
acade: true,
|
||||
remix: true,
|
||||
work: true
|
||||
})
|
||||
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(
|
||||
() => 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)
|
||||
})
|
||||
emit('update:modelValue', val);
|
||||
});
|
||||
|
||||
const handleClose = () => {
|
||||
visible.value = false
|
||||
}
|
||||
visible.value = false;
|
||||
};
|
||||
|
||||
const handleSubmit = () => {
|
||||
emit('submit', { ...form.value })
|
||||
}
|
||||
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;
|
||||
}
|
||||
.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