diff --git a/admin/src/api/teacher.ts b/admin/src/api/teacher.ts index 57593dca..a8d6bf53 100644 --- a/admin/src/api/teacher.ts +++ b/admin/src/api/teacher.ts @@ -11,7 +11,7 @@ export function teacherDetail(params: Record) { } // 教师信息扩展新增 -export function teacherAdd(params: Record) { +export function teacherAdd(params: any) { return request.post({ url: '/teacher/add', params }) } diff --git a/admin/src/views/teacher/teacher copy/edit.vue b/admin/src/views/teacher/teacher copy/edit.vue index 27a69c2c..8e5b0752 100644 --- a/admin/src/views/teacher/teacher copy/edit.vue +++ b/admin/src/views/teacher/teacher copy/edit.vue @@ -12,6 +12,9 @@ + + + - - + + + + @@ -35,13 +51,6 @@ - - - 在职 - 休假 - 离职 - - @@ -51,8 +60,10 @@ import type { FormInstance } from 'element-plus' import type { PropType } from 'vue' import { collegeLists } from '@/api/college' +import { roleAll } from '@/api/perms/role' import { teacherAdd, teacherDetail, teacherEdit } from '@/api/teacher' import Popup from '@/components/popup/index.vue' +import { useDictOptions } from '@/hooks/useDictOptions' import feedback from '@/utils/feedback' import { snakeToCamel } from '@/utils/format' defineProps({ @@ -65,22 +76,37 @@ const emit = defineEmits(['success', 'close']) const formRef = shallowRef() const popupRef = shallowRef>() const mode = ref('add') -const getCollegeLists = ref<{ lists: Array<{ id: number; college_name: string }> }>({ lists: [] }) +const getCollegeLists = ref<{ lists: Array<{ id: number; collegeName: string }> }>({ lists: [] }) const popupTitle = computed(() => { return mode.value == 'edit' ? '编辑教师信息扩展' : '新增教师信息扩展' }) +const { optionsData } = useDictOptions<{ + role: any[] +}>({ + role: { + api: roleAll + } +}) const formData = reactive({ id: '', + name: '', + roleId: [], adminId: '', teacherCode: '', - title: '', collegeId: '', contactPhone: '', - contactEmail: '', - teacherStatus: '' + contactEmail: '' }) +const roleIdValidator = (rule: object, value: string, callback: any) => { + if (formData.roleId.length) { + callback() + } else { + callback(new Error('请选择角色')) + } +} + const formRules = { id: [ { @@ -88,23 +114,47 @@ const formRules = { message: '请输入', trigger: ['blur'] } + ], + teacherCode: [ + { + required: true, + message: '请输入教师工号', + trigger: ['blur'] + } + ], + name: [ + { + required: true, + message: '请输入教师名称', + trigger: ['blur'] + } + ], + roleId: [ + { + required: true, + validator: roleIdValidator + } + ], + collegeId: [ + { + required: true, + message: '请选择所属学院', + trigger: ['change'] + } + ], + contactPhone: [ + { + required: true, + message: '请输入联系电话', + trigger: ['blur'] + } ] } -const fetchCollegeLists = async () => { - try { - const res = await collegeLists() // 调用接口 - getCollegeLists.value = res // 存储接口返回数据 - } catch (err) { - feedback.msgError('获取学院列表失败') - } -} - const handleSubmit = async () => { await formRef.value?.validate() const data: any = { ...formData } - const camelData = snakeToCamel(data) - mode.value == 'edit' ? await teacherEdit(camelData) : await teacherAdd(camelData) + mode.value == 'edit' ? await teacherEdit(data) : await teacherAdd(data) popupRef.value?.close() feedback.msgSuccess('操作成功') emit('success') @@ -116,6 +166,15 @@ const open = (type = 'add') => { popupRef.value?.open() } +const fetchCollegeLists = async () => { + try { + const res = await collegeLists() // 调用接口 + getCollegeLists.value = res // 存储接口返回数据 + } catch (err) { + feedback.msgError('获取学院列表失败') + } +} + const setFormData = async (data: Record) => { const camelData = snakeToCamel(data) for (const key in formData) { diff --git a/admin/src/views/teacher/teacher copy/index.vue b/admin/src/views/teacher/teacher copy/index.vue index 7a4a5b3a..54ff47bc 100644 --- a/admin/src/views/teacher/teacher copy/index.vue +++ b/admin/src/views/teacher/teacher copy/index.vue @@ -35,7 +35,6 @@ -