合并代码

This commit is contained in:
2026-01-29 11:47:41 +08:00
29 changed files with 247 additions and 477 deletions

View File

@@ -158,16 +158,16 @@ export const queryTeacherInfoForEms = (obj: string | number) => {
});
};
/**
* 根据编号查询教师基础信息(资产)
* @param obj
*/
export const queryTeacherBaseByNoByAssets = (obj: string | number) => {
return request({
url: `/professional/teacherbase/queryTeacherBaseByNoByAssets/${obj}`,
method: 'get',
});
};
// /**
// * 根据编号查询教师基础信息(资产)
// * @param obj
// */
// export const queryTeacherBaseByNoByAssets = (obj: string | number) => {
// return request({
// url: `/professional/teacherbase/queryTeacherBaseByNoByAssets/${obj}`,
// method: 'get',
// });
// };
/**
* 获取教师信息EMS搜索

View File

@@ -41,8 +41,9 @@ export const getObj = (id: string | number) => {
*/
export const delObj = (id: string | number) => {
return request({
url: `/recruit/recruitexampeople/${id}`,
method: 'delete',
url: `/recruit/recruitexampeople/delete`,
method: 'post',
data: { id: id }
});
};

View File

@@ -142,6 +142,16 @@ export const TURNOVER_AUDIT_STATUS_LIST = [
{ label: "通过", value: "3" ,type: "success", icon: "CircleCheck"}
];
// 人事模块
// 专业审核状态选项(用于 AuditState 组件), 学历学位审核状态选项
import type { StateOption } from '/@/components/AuditState/index.vue'
export const PROFESSIONAL_AUDIT_STATE_OPTIONS: StateOption[] = [
{ value: '1', label: '已通过', type: 'success', icon: 'fa-solid fa-circle-check', effect: 'dark' },
{ value: '-2', label: '已驳回', type: 'danger', icon: 'fa-solid fa-circle-xmark', effect: 'dark' },
{ value: '0', label: '待审核', type: 'warning', icon: 'fa-regular fa-clock', effect: 'light' }
];
/**
* 根据值从状态列表中获取配置项
* @param statusList 状态列表

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalacademicqualificationsconfig_add">
v-auth="'professional_professionalacademicqualificationsconfig_add'">
</el-button>
</div>
</el-row>
@@ -34,14 +34,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalacademicqualificationsconfig_edit"
v-auth="'professional_professionalacademicqualificationsconfig_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalacademicqualificationsconfig_del"
v-auth="'professional_professionalacademicqualificationsconfig_del'"
icon="delete"
link
type="danger"
@@ -62,7 +62,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -113,26 +113,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/academicqualificationsconfig'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()

View File

@@ -27,7 +27,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_outercompany_add">
v-auth="'professional_outercompany_add'">
</el-button>
</div>
</el-row>
@@ -59,14 +59,14 @@
<el-table-column label="操作" min-width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_outercompany_edit"
v-auth="'professional_outercompany_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_outercompany_del"
v-auth="'professional_outercompany_del'"
icon="delete"
link
type="danger"
@@ -86,7 +86,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -140,26 +140,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj, getObj } from '/@/api/professional/stayschool/outercompany'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()

View File

@@ -27,7 +27,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_outercompany_add">
v-auth="'professional_outercompany_add'">
</el-button>
<!-- <right-toolbar
v-model:showSearch="showSearch"
@@ -65,14 +65,14 @@
<el-table-column label="操作" min-width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_outercompany_edit"
v-auth="'professional_outercompany_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_outercompany_del"
v-auth="'professional_outercompany_del'"
icon="delete"
link
type="danger"
@@ -92,7 +92,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -146,26 +146,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj, getObj } from '/@/api/professional/stayschool/outercompany'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()

View File

@@ -48,14 +48,14 @@
<!-- <el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_outercompany_edit"
v-auth="'professional_outercompany_edit'"
icon="edit-pen"
text
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_outercompany_del"
v-auth="'professional_outercompany_del'"
icon="delete"
text
type="danger"
@@ -77,24 +77,10 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { fetchList } from '/@/api/professional/stayschool/outercompany'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 表格引用
const tableRef = ref()

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="visible"
:title="formData.id ? '编辑' : '新增'"
:title="formData.id ? '修改' : '新增'"
width="800px"
:close-on-click-modal="false"
destroy-on-close

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="visible"
:title="formData.id ? '编辑' : '新增'"
:title="formData.id ? '修改' : '新增'"
width="800px"
:close-on-click-modal="false"
destroy-on-close

View File

@@ -75,7 +75,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_outercompanyemployee_add">
v-auth="'professional_outercompanyemployee_add'">
</el-button>
<el-button
type="primary"
@@ -152,21 +152,21 @@
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_outercompanyemployee_edit"
v-auth="'professional_outercompanyemployee_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_outercompanyemployee_reset_pw"
v-auth="'professional_outercompanyemployee_reset_pw'"
icon="RefreshLeft"
link
type="primary"
@click="resetPassword(scope.row)">重置密码
</el-button>
<!-- <el-button
v-if="permissions.professional_outercompanyemployee_del"
v-auth="'professional_outercompanyemployee_del'"
icon="delete"
link
type="primary"
@@ -230,18 +230,14 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive, onMounted } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { useDict } from '/@/hooks/dict'
import { Session } from '/@/utils/storage'
import { validateNull } from '/@/utils/validate'
import axios from 'axios'
import request from '/@/utils/request'
import { Plus, Picture } from '@element-plus/icons-vue'
import {
fetchList,
getObj,
@@ -250,20 +246,7 @@ import {
resetPassWord
} from '/@/api/professional/stayschool/outercompanyemployee'
import { getList as getCompanyList } from '/@/api/professional/stayschool/outercompany'
import FormDialog from './form.vue'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
const FormDialog = defineAsyncComponent(() => import('./form.vue'))
// 消息提示 hooks
const message = useMessage()

View File

@@ -81,7 +81,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_outercompanyemployee_add"
v-auth="'professional_outercompanyemployee_add'"
>
</el-button>
@@ -171,21 +171,21 @@
<el-table-column label="操作" width="250" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_outercompanyemployee_edit"
v-auth="'professional_outercompanyemployee_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_outercompanyemployee_reset_pw"
v-auth="'professional_outercompanyemployee_reset_pw'"
icon="RefreshLeft"
link
type="primary"
@click="resetPassword(scope.row)">重置密码
</el-button>
<!-- <el-button
v-if="permissions.professional_outercompanyemployee_del"
v-auth="'professional_outercompanyemployee_del'"
icon="delete"
link
type="primary"
@@ -250,14 +250,11 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive, onMounted } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { useDict } from '/@/hooks/dict'
import { Session } from '/@/utils/storage'
import { validateNull } from '/@/utils/validate'
import axios from 'axios'
import request from '/@/utils/request'
@@ -271,20 +268,7 @@ import {
resetPassWord
} from '/@/api/professional/stayschool/outercompanyemployee'
import { getList as getCompanyList } from '/@/api/professional/stayschool/outercompany'
import FormDialog from './form.vue'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
const FormDialog = defineAsyncComponent(() => import('./form.vue'))
// 消息提示 hooks
const message = useMessage()

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalacademicdegreeconfig_add">
v-auth="'professional_professionalacademicdegreeconfig_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalacademicdegreeconfig_edit"
v-auth="'professional_professionalacademicdegreeconfig_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalacademicdegreeconfig_del"
v-auth="'professional_professionalacademicdegreeconfig_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalacademicdegreeconfig'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalacademiceducationtypeconfig_add">
v-auth="'professional_professionalacademiceducationtypeconfig_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalacademiceducationtypeconfig_edit"
v-auth="'professional_professionalacademiceducationtypeconfig_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalacademiceducationtypeconfig_del"
v-auth="'professional_professionalacademiceducationtypeconfig_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalacademiceducationtypeconfig'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalatstation_add">
v-auth="'professional_professionalatstation_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalatstation_edit"
v-auth="'professional_professionalatstation_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalatstation_del"
v-auth="'professional_professionalatstation_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalatstation'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalemploymentnature_add">
v-auth="'professional_professionalemploymentnature_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalemploymentnature_edit"
v-auth="'professional_professionalemploymentnature_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalemploymentnature_del"
v-auth="'professional_professionalemploymentnature_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalemploymentnature'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalmajorstation_add">
v-auth="'professional_professionalmajorstation_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalmajorstation_edit"
v-auth="'professional_professionalmajorstation_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalmajorstation_del"
v-auth="'professional_professionalmajorstation_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalmajorstation'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalpaperconfig_add">
v-auth="'professional_professionalpaperconfig_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalpaperconfig_edit"
v-auth="'professional_professionalpaperconfig_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalpaperconfig_del"
v-auth="'professional_professionalpaperconfig_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalpaperconfig'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()
@@ -235,7 +220,7 @@ const handleSubmit = async () => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
} finally {
submitLoading.value = false
}

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalpartybranch_add">
v-auth="'professional_professionalpartybranch_add'">
</el-button>
</div>
</el-row>
@@ -38,14 +38,14 @@
type="primary"
link
icon="Edit"
v-if="permissions.professional_professionalpartybranch_edit"
v-auth="'professional_professionalpartybranch_edit'"
@click="handleEdit(scope.row)">编辑
</el-button>
<el-button
type="danger"
link
icon="Delete"
v-if="permissions.professional_professionalpartybranch_del"
v-auth="'professional_professionalpartybranch_del'"
@click="handleDel(scope.row)">删除
</el-button>
</template>
@@ -62,7 +62,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -113,27 +113,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalpartybranch'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()
@@ -234,7 +219,7 @@ const handleSubmit = async () => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
} finally {
submitLoading.value = false
}

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalqualificationconfig_add">
v-auth="'professional_professionalqualificationconfig_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalqualificationconfig_edit"
v-auth="'professional_professionalqualificationconfig_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalqualificationconfig_del"
v-auth="'professional_professionalqualificationconfig_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalqualificationconfig'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()
@@ -235,7 +220,7 @@ const handleSubmit = async () => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
} finally {
submitLoading.value = false
}

View File

@@ -1,5 +1,5 @@
<template>
<el-dialog v-model="dialogVisible" title="编辑职业资格" width="600px" append-to-body :close-on-click-modal="false" destroy-on-close>
<el-dialog v-model="dialogVisible" title="修改职业资格" width="600px" append-to-body :close-on-click-modal="false" destroy-on-close>
<div v-if="showForm">
<el-form
ref="formRef"

View File

@@ -59,13 +59,13 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalqualificationrelation_add">
v-auth="'professional_professionalqualificationrelation_add'">
</el-button>
<el-button
type="warning"
plain
icon="Download"
v-if="permissions.professional_teacherbase_export"
v-auth="'professional_teacherbase_export'"
@click="handleDownLoadWord"
:loading="exportLoading">导出信息
</el-button>
@@ -127,31 +127,34 @@
<el-table-column label="操作" width="280" align="center" fixed="right">
<template #default="scope">
<el-button
v-auth="'professional_professionalqualificationrelation_edit'"
v-if="scope.row.state === '0' || scope.row.state === '-2'"
type="primary"
link
icon="edit-pen"
v-if="permissions.professional_professionalqualificationrelation_edit && (scope.row.state === '0' || scope.row.state === '-2')"
@click="handleEdit(scope.row)">编辑
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-auth="'professional_professionalqualificationrelation_exam'"
v-if="scope.row.state === '0'"
type="success"
link
icon="CircleCheck"
v-if="permissions.professional_professionalqualificationrelation_exam && scope.row.state === '0'"
@click="changeState(scope.row, 1)">通过
</el-button>
<el-button
v-auth="'professional_professionalqualificationrelation_exam'"
v-if="scope.row.state === '0' || scope.row.state === '1'"
type="danger"
link
icon="CircleClose"
v-if="permissions.professional_professionalqualificationrelation_exam && (scope.row.state === '0' || scope.row.state === '1')"
@click="changeState(scope.row, -2)">驳回
</el-button>
<el-button
v-auth="'professional_professionalqualificationrelation_del'"
type="danger"
link
icon="delete"
v-if="permissions.professional_professionalqualificationrelation_del"
style="margin-left: 12px"
@click="handleDel(scope.row)">删除
</el-button>
@@ -182,9 +185,7 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed, onMounted, nextTick } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive, onMounted, nextTick } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
@@ -197,6 +198,7 @@ import {
} from '/@/api/professional/professionaluser/professionalqualificationrelation'
import { getLevelList } from '/@/api/professional/rsbase/professionalqualificationconfig'
import { getWorkTypeList } from '/@/api/professional/rsbase/professionalworktype'
import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global'
import { defineAsyncComponent } from 'vue'
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue'))
@@ -204,26 +206,9 @@ const DataForm = defineAsyncComponent(() => import('./form.vue'))
const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue'))
const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue'))
// 审核状态选项(独立定义,防止其他页面修改时被波及)
import type { StateOption } from '/@/components/AuditState/index.vue'
const auditStateOptions: StateOption[] = [
{ value: '1', label: '已通过', type: 'success', icon: 'fa-solid fa-circle-check', effect: 'dark' },
{ value: '-2', label: '已驳回', type: 'danger', icon: 'fa-solid fa-circle-xmark', effect: 'dark' },
{ value: '0', label: '待审核', type: 'warning', icon: 'fa-regular fa-clock', effect: 'light' }
]
// 审核状态选项
const auditStateOptions = PROFESSIONAL_AUDIT_STATE_OPTIONS
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
@@ -357,7 +342,7 @@ const handleDel = (row: any) => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
}
}).catch(() => {})
}

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalstationdutylevel_add">
v-auth="'professional_professionalstationdutylevel_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalstationdutylevel_edit"
v-auth="'professional_professionalstationdutylevel_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalstationdutylevel_del"
v-auth="'professional_professionalstationdutylevel_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalstationdutylevel'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()
@@ -235,7 +220,6 @@ const handleSubmit = async () => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
} finally {
submitLoading.value = false
}

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalstationtype_add">
v-auth="'professional_professionalstationtype_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalstationtype_edit"
v-auth="'professional_professionalstationtype_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalstationtype_del"
v-auth="'professional_professionalstationtype_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalstationtype'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()
@@ -235,7 +220,6 @@ const handleSubmit = async () => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
} finally {
submitLoading.value = false
}

View File

@@ -1,5 +1,5 @@
<template>
<el-dialog v-model="dialogVisible" title="编辑学历学位" width="600px" append-to-body :close-on-click-modal="false" destroy-on-close>
<el-dialog v-model="dialogVisible" title="修改学历学位" width="600px" append-to-body :close-on-click-modal="false" destroy-on-close>
<div v-if="showForm">
<el-form
ref="formRef"

View File

@@ -59,13 +59,13 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalteacheracademicrelation_add">
v-auth="'professional_professionalteacheracademicrelation_add'">
</el-button>
<el-button
type="warning"
plain
icon="Download"
v-if="permissions.professional_teacherbase_export"
v-auth="'professional_teacherbase_export'"
@click="handleDownLoadWord"
:loading="exportLoading">导出信息
</el-button>
@@ -153,31 +153,34 @@
<el-table-column label="操作" width="280" align="center" fixed="right">
<template #default="scope">
<el-button
v-auth="'professional_professionalteacheracademicrelation_edit'"
v-if="scope.row.state === '0' || scope.row.state === '-2'"
type="primary"
link
icon="edit-pen"
v-if="permissions.professional_professionalteacheracademicrelation_edit && (scope.row.state === '0' || scope.row.state === '-2')"
@click="handleEdit(scope.row)">编辑
</el-button>
<el-button
v-auth="'professional_professionalteacheracademicrelation_exam'"
v-if="scope.row.state === '0'"
type="success"
link
icon="CircleCheck"
v-if="permissions.professional_professionalteacheracademicrelation_exam && scope.row.state === '0'"
@click="changeState(scope.row, 1)">通过
</el-button>
<el-button
v-auth="'professional_professionalteacheracademicrelation_exam'"
v-if="scope.row.state === '0' || scope.row.state === '1'"
type="danger"
link
icon="CircleClose"
v-if="permissions.professional_professionalteacheracademicrelation_exam && (scope.row.state === '0' || scope.row.state === '1')"
@click="changeState(scope.row, -2)">驳回
</el-button>
<el-button
v-auth="'professional_professionalteacheracademicrelation_del'"
type="danger"
link
icon="delete"
v-if="permissions.professional_professionalteacheracademicrelation_del"
style="margin-left: 12px"
@click="handleDel(scope.row)">删除
</el-button>
@@ -208,9 +211,7 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed, onMounted, nextTick } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive, onMounted, nextTick } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
@@ -224,6 +225,7 @@ import {
import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig'
import { getQualificationList } from '/@/api/professional/rsbase/academicqualificationsconfig'
import { getAllTypeList } from '/@/api/professional/rsbase/professionalacademiceducationtypeconfig'
import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global'
import { defineAsyncComponent } from 'vue'
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue'))
@@ -231,26 +233,9 @@ const DataForm = defineAsyncComponent(() => import('./form.vue'))
const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue'))
const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue'))
// 审核状态选项(独立定义,防止其他页面修改时被波及)
import type { StateOption } from '/@/components/AuditState/index.vue'
const auditStateOptions: StateOption[] = [
{ value: '1', label: '已通过', type: 'success', icon: 'fa-solid fa-circle-check', effect: 'dark' },
{ value: '-2', label: '已驳回', type: 'danger', icon: 'fa-solid fa-circle-xmark', effect: 'dark' },
{ value: '0', label: '待审核', type: 'warning', icon: 'fa-regular fa-clock', effect: 'light' }
]
// 审核状态选项
const auditStateOptions = PROFESSIONAL_AUDIT_STATE_OPTIONS
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
@@ -349,7 +334,6 @@ const changeState = (row: any, val: number) => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
}
}).catch(() => {})
} else if (val === -2) {
@@ -396,7 +380,6 @@ const handleDel = (row: any) => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
}
}).catch(() => {})
}

View File

@@ -8,7 +8,7 @@
type="primary"
icon="FolderAdd"
@click="handleAdd"
v-if="permissions.professional_professionalteachercertificateconf_add">
v-auth="'professional_professionalteachercertificateconf_add'">
</el-button>
</div>
</el-row>
@@ -35,14 +35,14 @@
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="scope">
<el-button
v-if="permissions.professional_professionalteachercertificateconf_edit"
v-auth="'professional_professionalteachercertificateconf_edit'"
icon="edit-pen"
link
type="primary"
@click="handleEdit(scope.row)">修改
</el-button>
<el-button
v-if="permissions.professional_professionalteachercertificateconf_del"
v-auth="'professional_professionalteachercertificateconf_del'"
icon="delete"
link
type="danger"
@@ -63,7 +63,7 @@
<!-- 新增/编辑弹窗 -->
<el-dialog
v-model="dialogVisible"
:title="form.id ? '编辑' : '新增'"
:title="form.id ? '修改' : '新增'"
width="600px"
:close-on-click-modal="false"
destroy-on-close
@@ -114,27 +114,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive } from 'vue'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/rsbase/professionalteachercertificateconf'
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 消息提示 hooks
const message = useMessage()
const messageBox = useMessageBox()
@@ -235,7 +220,6 @@ const handleSubmit = async () => {
getDataList()
} catch (error: any) {
// 处理业务错误
message.error(error.msg)
} finally {
submitLoading.value = false
}

View File

@@ -310,11 +310,40 @@
<TableColumn prop="workLevelName" label="职业资格等级" width="120" align="center" show-overflow-tooltip />
<TableColumn prop="teacherCer" label="教师上岗证" width="120" align="center" show-overflow-tooltip />
<TableColumn prop="midCer" label="中等教师资格证" width="150" align="center" show-overflow-tooltip />
<TableColumn prop="highCer" label="高校教师资格证" width="150" align="center" show-overflow-tooltip />
<TableColumn label="资格证书" width="120" align="center">
<template #default="scope">
<DetailPopover
v-if="scope.row.teacherCer || scope.row.midCer || scope.row.highCer"
title="资格证书"
:title-icon="InfoFilled"
:width="320"
:items="[
{
label: '教师上岗证',
content: scope.row.teacherCer || '-',
layout: 'horizontal'
},
{
label: '中等教师资格证',
content: scope.row.midCer || '-',
layout: 'horizontal'
},
{
label: '高校教师资格证',
content: scope.row.highCer || '-',
layout: 'horizontal'
}
]">
<template #reference>
<span class="certificate-link" style="color: var(--el-color-primary); cursor: pointer;">
查看详情
<el-icon class="title-icon"><InfoFilled /></el-icon>
</span>
</template>
</DetailPopover>
<span v-else class="empty-text">-</span>
</template>
</TableColumn>
<TableColumn prop="employmentNature" label="用工性质" width="120" align="center" show-overflow-tooltip />
@@ -1434,7 +1463,7 @@
import { useMessage, useMessageBox } from '/@/hooks/message'
import axios from 'axios'
// 导入图标
import { User, Phone, Document, CreditCard, Briefcase, Flag, Plus, Delete, Connection, School, Medal, Files, Clock, Setting, Switch, CircleCheck, CircleClose, Refresh, Download } from '@element-plus/icons-vue'
import { User, Phone, Document, CreditCard, Briefcase, Flag, Plus, Delete, Connection, School, Medal, Files, Clock, Setting, Switch, CircleCheck, CircleClose, Refresh, Download, InfoFilled } from '@element-plus/icons-vue'
// 导入api统一使用 /@/ 路径别名)
import {
@@ -1448,6 +1477,7 @@
exportTeacherInfo as exportTeacherInfoApi
} from '/@/api/professional/professionaluser/teacherbase'
import {getDictsByTypes} from '/@/api/admin/dict'
import {useDict} from '/@/hooks/dict'
import {getNationalList} from '/@/api/basic/basicnation'
import {addPoliticssStatus, dePoObj} from '/@/api/professional/professionaluser/professionalpoliticsstatus'
import {addSocialObj, delSocialObj as delSocialObjApi} from '/@/api/professional/professionaluser/professionalsocial'
@@ -1462,7 +1492,6 @@
import {updateStatus} from '/@/api/professional/professionalstatuslock'
import {resetPassWord} from "/@/api/professional/professionaluser/teacherbase"
// 组件配置已不再需要(已从 avue-crud 迁移到 el-table
import global from '/@/components/tools/commondict.vue'
import authImg from "/@/components/tools/auth-img.vue"
// 导入工具
@@ -1472,6 +1501,7 @@
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
const DetailPopover = defineAsyncComponent(() => import('/@/components/DetailPopover/index.vue'))
const ShowEvidence = defineAsyncComponent(() => import("../common/showEvidence.vue"));
const ExportTeacherInfoDialog = defineAsyncComponent(() => import('./export-teacher-info.vue'));
const ImportTeacherInfo = defineAsyncComponent(() => import('./import-teacherInfo.vue'));
@@ -1580,7 +1610,7 @@
professionalStationRelation: {}
})
const healthList = ref([])
const YES_OR_NO = global.YES_OR_NO
const { yes_no_type: YES_OR_NO ,sexy:sexyList } = useDict('yes_no_type','sexy')
const teacherCateList = ref([])
const baseInfoAbout = reactive({
stationTypeList: [],
@@ -1633,17 +1663,6 @@
const visibleTableColumns = ref<string[]>([])
// 静态配置数据
const sexyList = [
{
label: '男',
value: '1'
},
{
label: '女',
value: '0'
}
]
const teacherClassifyData = ref([])
const stationFormValidate = {
stationTypeId: [
@@ -2904,6 +2923,30 @@
font-size: 14px;
}
// 资格证书链接样式
:deep(.certificate-link){
display: inline-flex;
align-items: center;
gap: 4px;
color: var(--el-color-primary)!important;
cursor: pointer;
transition: all 0.2s ease;
&:hover {
color: var(--el-color-primary-light-3)!important;
text-decoration: underline;
}
.title-icon {
font-size: 14px;
opacity: 0.8;
}
}
.empty-text {
color: #909399;
}
}
// 弹窗内容区域样式优化 - 只优化外层容器,不修改组件内部样式

View File

@@ -33,7 +33,7 @@
v-for="item in teacherList"
:key="item.teacherNo"
:label="item.realName"
:value="item.realName"
:value="item.teacherNo"
/>
</el-select>
</el-form-item>
@@ -49,7 +49,7 @@
<script setup lang="ts" name="AddExamPeopleForm">
import { ref, watch } from 'vue'
import { queryTeacherBaseByNoByAssets } from '/@/api/professional/professionaluser/teacherbase'
import {getTeacherInfoCommon} from '/@/api/professional/professionaluser/teacherbase'
// Props
const props = defineProps<{
@@ -87,7 +87,7 @@ const remoteTeacherByQuery = (query: string) => {
teacherList.value = []
if (query !== '') {
setTimeout(() => {
queryTeacherBaseByNoByAssets(query).then(response => {
getTeacherInfoCommon({searchKeywords:query,tied:"0"}).then(response => {
teacherList.value = response.data
})
}, 200)

View File

@@ -252,64 +252,79 @@ const dataRule = {
/**
* 判断市平台招生专业是否占用,占用不可选
*/
const isCityDisable = (id: string) => {
if (!dataForm.cityPlanIds || !Array.isArray(dataForm.cityPlanIds)) {
return false
}
return dataForm.cityPlanIds.some(e => e == id)
}
// const isCityDisable = (id: string) => {
// if (!dataForm.cityPlanIds || !Array.isArray(dataForm.cityPlanIds)) {
// return false
// }
// return dataForm.cityPlanIds.some(e => e == id)
// }
// 设置费用默认值
const setFeeDefaults = () => {
if (tuitionFeeList.value.length > 0) {
// 初中费用:字典值 1
const czFeeItem = tuitionFeeList.value.find((item: any) => item.value === '1')
const czFeeItem = tuitionFeeList.value.find((item: any) => item.label === '1')
if (czFeeItem) {
dataForm.czFee = Number(czFeeItem.label) || 0
dataForm.czFee = Number(czFeeItem.value) || 0
}
// 高中费用:字典值 2
const gzFeeItem = tuitionFeeList.value.find((item: any) => item.value === '2')
const gzFeeItem = tuitionFeeList.value.find((item: any) => item.label === '2')
if (gzFeeItem) {
dataForm.gzFee = Number(gzFeeItem.label) || 0
dataForm.gzFee = Number(gzFeeItem.value) || 0
}
// 技职校费用:字典值 3
const jzxFeeItem = tuitionFeeList.value.find((item: any) => item.value === '3')
const jzxFeeItem = tuitionFeeList.value.find((item: any) => item.label === '3')
if (jzxFeeItem) {
dataForm.jzxFee = Number(jzxFeeItem.label) || 0
dataForm.jzxFee = Number(jzxFeeItem.value) || 0
}
}
}
// 初始化数据
const initData = () => {
const initData = (id: string | null) => {
// 查询二级学院信息
getDeptList().then((data: any) => {
deptList.value = data.data
})
// 获取招生计划列表
getList().then((data: any) => {
planList.value = data.data
// 新增时,默认选中第一个招生计划
if (!id && data.data && data.data.length > 0) {
dataForm.groupId = data.data[0]?.id || ''
}
})
// 获取正式专业代码列表
getMajorNameList().then((data: any) => {
offcialZydmList.value = data.data
})
// 获取数据字典(一次获取多个)
getDictsByTypes(['basic_major_years', 'basic_major_level', 'tuition_fee']).then((res: any) => {
majorYears.value = res.data?.basic_major_years || []
ccList.value = res.data?.basic_major_level || []
tuitionFeeList.value = res.data?.tuition_fee || []
// 新增时,根据学费字典设置费用默认值
if (!id) {
setFeeDefaults()
}
})
}
// 表单提交
const dataFormSubmit = () => {
if (dataForm.cityPlanId != null) {
cityPlanIdList.value.forEach(e => {
if (e.id == dataForm.cityPlanId) {
dataForm.cityPlanName = e.schoolMajorName
dataForm.cityPlanYear = e.educational
}
})
}
// if (dataForm.cityPlanId != null) {
// cityPlanIdList.value.forEach(e => {
// if (e.id == dataForm.cityPlanId) {
// dataForm.cityPlanName = e.schoolMajorName
// dataForm.cityPlanYear = e.educational
// }
// })
// }
dataFormRef.value?.validate((valid: boolean) => {
if (valid) {
canSubmit.value = false
@@ -351,7 +366,7 @@ const init = (id: string | null) => {
dataFormRef.value?.resetFields()
})
initData()
initData(id)
// 获取详情数据
if (id) {
@@ -368,17 +383,7 @@ const init = (id: string | null) => {
// 错误处理
})
} else {
// 新增模式:设置默认招生计划和费用默认值
getList().then((data: any) => {
if (data.data && data.data.length > 0) {
dataForm.groupId = data.data[0]?.id || ""
}
})
// 等待字典数据加载完成后设置费用默认值
getDictsByTypes(['tuition_fee']).then((res: any) => {
tuitionFeeList.value = res.data?.tuition_fee || []
setFeeDefaults()
})
// 新增模式:initData 中已处理默认招生计划和费用默认值
}
}