提交 39760f25 authored 作者: matian's avatar matian

chore:对接学生管理接口,暂时注释创建课程第一步的专业

上级 5d5c19de
...@@ -62,7 +62,6 @@ const handleConfirm = async (formEl: FormInstance | undefined) => { ...@@ -62,7 +62,6 @@ const handleConfirm = async (formEl: FormInstance | undefined) => {
console.log(valid) console.log(valid)
if (valid) { if (valid) {
if (props.isEdit === '0') { if (props.isEdit === '0') {
// 更新字典的值
const params: any = Object.assign({}, form) const params: any = Object.assign({}, form)
addStaff(params).then(() => { addStaff(params).then(() => {
ElMessage.success('新增教工成功') ElMessage.success('新增教工成功')
......
...@@ -15,7 +15,13 @@ const id = ref('') ...@@ -15,7 +15,13 @@ const id = ref('')
const isShowStaffDialog = ref(false) const isShowStaffDialog = ref(false)
const listOptions = $computed(() => { const listOptions = $computed(() => {
return { return {
remote: { httpRequest: getStaffList }, remote: {
httpRequest: getStaffList,
params: {
name: '',
organ_id: ''
}
},
filters: [ filters: [
{ type: 'input', prop: 'name', label: '姓名:', placeholder: '姓名' }, { type: 'input', prop: 'name', label: '姓名:', placeholder: '姓名' },
{ type: 'select', slots: 'filter-department' } { type: 'select', slots: 'filter-department' }
......
...@@ -2,9 +2,49 @@ import httpRequest from '@/utils/axios' ...@@ -2,9 +2,49 @@ import httpRequest from '@/utils/axios'
// 获取学生列表 // 获取学生列表
export function getStudentList(params?: { type?: string; page?: number; page_size?: number }) { export function getStudentList(params?: { type?: string; page?: number; page_size?: number }) {
return httpRequest.get('/api/psp/backend/video/index', { params }) return httpRequest.get('/api/resource/v1/learning/student/list', { params })
} }
// // 获取学生列表 // // 导入学生
export function importStudent(params?: { file: any }) { export function importStudent(data: { file: any }) {
return httpRequest.get('/api/psp/backend/video/index', { params }) return httpRequest.post('/api/resource/v1/learning/student/import', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
// 添加学生
export function addStudent(data?: {
name: string
id_type: string
gender: string
mobile: string
id_number: string
organ_id: string
sno_number: string
class_id?: string
specialty_id?: string
}) {
return httpRequest.post('/api/resource/v1/learning/student/create', data)
}
// 更新学生
export function updateStudent(data?: {
id: string
name: string
id_type: string
gender: string
mobile: string
id_number: string
organ_id: string
sno_number: string
class_id?: string
specialty_id?: string
}) {
return httpRequest.post('/api/resource/v1/learning/student/update', data)
}
// 获取学生详情
export function getStuDetail(params?: { id: string }) {
return httpRequest.get('/api/resource/v1/learning/student/view', { params })
}
// 班级搜索
export function getClassList(params?: { specialty_id: string; organ_id: string; page?: string; 'per-page'?: string }) {
return httpRequest.get('/api/resource/v1/learning/student/search-class', { params })
} }
<script lang="ts" setup> <script lang="ts" setup>
import type { FormRules } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
import { useProjectList } from '@/composables/useGetProjectList' import { useProjectList } from '@/composables/useGetProjectList'
import { useMapStore } from '@/stores/map'
import { addStudent, updateStudent, getStuDetail, getClassList } from '../api'
const store = useMapStore()
const ruleFormRef = ref<FormInstance>()
const emit = defineEmits<Emits>() const emit = defineEmits<Emits>()
const departmentList: any = useProjectList('', '79806610719731712').departmentList const departmentList: any = useProjectList('', '79806610719731712').departmentList
const sexList = store.mapList.filter((item: any) => item.key === 'system_gender')[0].values
const idTypeList = store.mapList.filter((item: any) => item.key === 'system_id_type')[0].values
const statusList = store.getMapValuesByKey('system_status')
const majorList = store.getMapValuesByKey('specialty_category')
const classList = [
{
id: '111',
name: 'qq'
},
{
id: '222',
name: 'ww'
}
]
const form = reactive({ const form = reactive({
sno: '', sno_number: '',
name: '', name: '',
sex: 0, gender: '1',
mobile: '', mobile: '',
card_type: 0, id_type: '1',
card_number: '', id_number: '',
school: '', organ_id: '',
major: '', specialty_id: '',
class: '', class_id: '',
status: 0 status: '1'
}) })
const rules = reactive<FormRules>({ const rules = reactive<FormRules>({
sno: [{ required: true, message: '请输入学号', trigger: 'blur' }], sno_number: [{ required: true, message: '请输入学号', trigger: 'blur' }],
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
sex: [{ required: true, message: '请选择性别', trigger: 'change' }], gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
mobile: [{ required: true, message: '请输入手机号', trigger: 'blur' }], mobile: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
card_type: [{ required: true, message: '请选择证件类型', trigger: 'change' }], id_type: [{ required: true, message: '请选择证件类型', trigger: 'change' }],
card_number: [{ required: true, message: '请选择证件号码', trigger: 'blur' }], id_number: [{ required: true, message: '请输入证件号码', trigger: 'blur' }],
school: [{ required: true, message: '请选择部门/学校', trigger: 'change' }], organ_id: [{ required: true, message: '请选择部门/学校', trigger: 'change' }]
status: [{ required: true, message: '请选择状态', trigger: 'change' }] // status: [{ required: true, message: '请选择状态', trigger: 'change' }]
}) })
const props = defineProps({ const props = defineProps({
isShowAddDialog: { isShowAddDialog: {
...@@ -46,6 +47,9 @@ const props = defineProps({ ...@@ -46,6 +47,9 @@ const props = defineProps({
}, },
id: { id: {
type: String type: String
},
isEdit: {
type: String
} }
}) })
interface Emits { interface Emits {
...@@ -60,62 +64,129 @@ const handleCancel = () => { ...@@ -60,62 +64,129 @@ const handleCancel = () => {
console.log('999') console.log('999')
} }
// 确认 // 确认
const handleConfirm = () => { const handleConfirm = async (formEl: FormInstance | undefined) => {
emit('update:isShowAddDialog', false) if (!formEl) return
emit('create') await formEl.validate(valid => {
console.log(valid)
if (valid) {
if (props.isEdit === '0') {
const params: any = Object.assign({}, form)
addStudent(params).then(() => {
ElMessage.success('新增学生成功')
emit('update:isShowAddDialog', false)
emit('create')
})
} else if (props.isEdit === '1') {
const params: any = Object.assign({ id: props.id }, form)
updateStudent(params).then(() => {
ElMessage.success('更新教工成功')
emit('update:isShowAddDialog', false)
emit('create')
})
} else {
emit('update:isShowAddDialog', false)
emit('create')
}
}
})
}
// 获取详情
if (props.isEdit === '2' || props.isEdit === '1') {
const params: any = { id: props.id }
getStuDetail(params).then((res: any) => {
console.log(res)
Object.keys(form).forEach(key => {
form[key] = res.data[key]
})
})
}
const loading = ref(false)
const classList: any = ref([])
const allLecturers: any = ref([])
const handleClassList = (query: string) => {
if (query) {
loading.value = true
getClassList({ specialty_id: query, organ_id: form.organ_id, 'per-page': '100' }).then((res: any) => {
loading.value = false
classList.value = res.data.list
classList.value.forEach((item: any) => {
const findItem = allLecturers.value.find((cItem: any) => cItem.id === item.id)
if (!findItem) {
allLecturers.value.push(item)
}
})
})
} else {
classList.value = []
}
} }
</script> </script>
<template> <template>
<el-dialog :model-value="isShowAddDialog" draggable :before-close="handleCancel" :title="props.title" width="30%"> <el-dialog :model-value="isShowAddDialog" draggable :before-close="handleCancel" :title="props.title" width="30%">
<el-form :model="form" label-width="120px" :rules="rules" ref="formRef"> <el-form :model="form" label-width="120px" :rules="rules" ref="ruleFormRef">
<el-form-item label="学号:" prop="sno"> <el-form-item label="学号:" prop="sno_number">
<el-input v-model="form.name" :disabled="props.title === '查看详情'"></el-input> <el-input v-model="form.sno_number" :disabled="props.title === '查看详情'"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="姓名:" prop="name"> <el-form-item label="姓名:" prop="name">
<el-input v-model="form.name" :disabled="props.title === '查看详情'"></el-input> <el-input v-model="form.name" :disabled="props.title === '查看详情'"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="性别:" prop="sex"> <el-form-item label="性别:" prop="gender">
<el-radio-group v-model="form.sex" :disabled="props.title === '查看详情'"> <el-radio-group v-model="form.gender" :disabled="props.title === '查看详情'">
<el-radio :label="0"></el-radio> <el-radio v-for="(item, index) in sexList" :key="index" :label="item.value">{{ item.label }}</el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="联系电话:" prop="mobile"> <el-form-item label="联系电话:" prop="mobile">
<el-input v-model="form.mobile" :disabled="props.title === '查看详情'"></el-input> <el-input v-model="form.mobile" :disabled="props.title === '查看详情'"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="证件类型:" prop="card_type"> <el-form-item label="证件类型:" prop="card_type">
<el-radio-group v-model="form.card_type" :disabled="props.title === '查看详情'"> <el-radio-group v-model="form.id_type" :disabled="props.title === '查看详情'">
<el-radio :label="0">身份证</el-radio> <el-radio v-for="(item, index) in idTypeList" :key="index" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="证件号码:" prop="card_number"> <el-form-item label="证件号码:" prop="id_number">
<el-input v-model="form.card_number" :disabled="props.title === '查看详情'" /> <el-input v-model="form.id_number" :disabled="props.title === '查看详情'" />
</el-form-item> </el-form-item>
<el-form-item label="所属部门/学校:" prop="school"> <el-form-item label="所属部门/学校:" prop="organ_id">
<el-select clearable v-model="form.school" :disabled="props.title === '查看详情'" style="width: 100%"> <el-select clearable v-model="form.organ_id" :disabled="props.title === '查看详情'" style="width: 100%">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="专业:" prop="major"> <el-form-item label="专业:" prop="specialty_id">
<el-input v-model="form.major" :disabled="props.title === '查看详情'" /> <el-select v-model="form.specialty_id" placeholder="请选择专业" :disabled="props.title === '查看详情'">
<el-option
v-for="(item, index) in majorList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="班级:" prop="class"> <el-form-item label="班级:" prop="class_id">
<el-select v-model="form.class" placeholder="请选择班级" :disabled="props.title === '查看详情'"> <el-select
<el-option v-for="(item, index) in classList" :key="index" :label="item.name" :value="item.id"></el-option> v-model="form.class_id"
clearable
filterable
remote
multiple
placeholder="请输入班级"
:remote-method="handleClassList"
:loading="loading"
style="width: 230px"
>
<el-option v-for="item in classList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="系统同步状态:" prop="status"> <el-form-item label="系统同步状态:" prop="status">
<el-radio-group v-model="form.status" :disabled="props.title === '查看详情'"> <el-radio-group v-model="form.status" :disabled="props.title === '查看详情'">
<el-radio :label="0">有效</el-radio> <el-radio v-for="(item, id) in statusList" :key="id" :label="item.value">{{ item.label }}</el-radio>
<el-radio :label="1">无效</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer v-if="isEdit !== '2'">
<span> <span>
<el-button @click="handleCancel">取消</el-button> <el-button @click="handleCancel">取消</el-button>
<el-button type="primary" @click="handleConfirm">确认</el-button> <el-button type="primary" @click="handleConfirm(ruleFormRef)">确认</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
......
...@@ -33,16 +33,14 @@ const beforeUpload = (file: any) => { ...@@ -33,16 +33,14 @@ const beforeUpload = (file: any) => {
return true return true
} }
} }
const fetchFileUpload = (data: any) => { const fetchFileUpload = (option: any) => {
console.log(data, 'data')
return new Promise(() => { return new Promise(() => {
importStudent({ file: data.file }).then((res: any) => { importStudent({ file: option.file }).then(() => {
if (res.code === 0) { ElMessage.success('导入数据成功')
ElMessage.success('导入数据成功')
}
}) })
}) })
} }
const handleSubmitUpload = () => { const handleSubmitUpload = () => {
upload.value.submit() upload.value.submit()
emit('update:isShowImportDialog', false) emit('update:isShowImportDialog', false)
...@@ -69,9 +67,9 @@ const handleSubmitUpload = () => { ...@@ -69,9 +67,9 @@ const handleSubmitUpload = () => {
</el-upload> </el-upload>
<div style="margin-bottom: 10px; text-align: center"> <div style="margin-bottom: 10px; text-align: center">
导入模板下载:<a 导入模板下载:<a
href="https://webapp-pub.ezijing.com/x-training-new/%E8%80%81%E5%B8%88%E6%A8%A1%E6%9D%BF.xlsx" href="https://webapp-pub.ezijing.com/center_resource/%E5%AD%A6%E7%94%9F%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx"
download="教师模板" download="教师模板"
><el-button type="text">teacher_import.xlsx</el-button></a ><el-link type="primary">teacher_import.xlsx</el-link></a
> >
</div> </div>
......
<script setup lang="ts"> <script setup lang="ts">
import { useProjectList } from '@/composables/useGetProjectList'
import AddStudent from '../components/AddStudent.vue' import AddStudent from '../components/AddStudent.vue'
import ImportStudent from '../components/ImportStudent.vue' import ImportStudent from '../components/ImportStudent.vue'
// import { getStudentList } from '../api' import { getStudentList } from '../api'
// import { useMapStore } from '@/stores/map' // import { useMapStore } from '@/stores/map'
// const store = useMapStore() // const store = useMapStore()
const departmentList: any = useProjectList('', '79806610719731712').departmentList
const appList = ref() const appList = ref()
const id = ref('') const id = ref('')
const title = ref('') // 弹框标题 const title = ref('')
const isEdit = ref('')
const isShowAddDialog = ref(false) const isShowAddDialog = ref(false)
const isShowImportDialog = ref(false) const isShowImportDialog = ref(false)
const listOptions = $computed(() => { const listOptions = $computed(() => {
return { return {
// remote: { httpRequest: getStudentList, params: { type: '' } }, remote: { httpRequest: getStudentList, params: { name: '', organ_id: '' } },
filters: [ filters: [
{ type: 'input', prop: 'name', label: '学生姓名:', placeholder: '学生姓名' }, { type: 'input', prop: 'name', label: '学生姓名:', placeholder: '学生姓名' },
{ type: 'select', prop: 'office', label: '所属部门/学校:', placeholder: '所属部门/学校' } { type: 'select', slots: 'filter-department' }
], ],
columns: [ columns: [
{ type: 'selection' },
{ label: '序号', type: 'index', align: 'center' }, { label: '序号', type: 'index', align: 'center' },
{ label: '学号', prop: 'sno', align: 'center' }, { label: '学号', prop: 'sno_number', align: 'center' },
{ label: '姓名', prop: 'name', align: 'center' }, { label: '姓名', prop: 'name', align: 'center' },
{ label: '性别', prop: 'sex', align: 'center' }, { label: '性别', prop: 'gender', align: 'center' },
{ label: '出生年月', prop: 'birth', align: 'center' }, { label: '出生年月', prop: 'birthday', align: 'center' },
{ label: '省', prop: 'province', align: 'center' }, { label: '省', prop: 'province_name', align: 'center' },
{ label: '市', prop: 'city', align: 'center' }, { label: '市', prop: 'city_name', align: 'center' },
{ label: '县', prop: 'county', align: 'center' }, { label: '县', prop: 'county_name', align: 'center' },
{ label: '联系电话', prop: 'mobile', align: 'center' }, { label: '联系电话', prop: 'mobile', align: 'center' },
{ label: '部门/学校', prop: 'school', align: 'center' }, { label: '部门/学校', prop: 'organ_id_name', align: 'center' },
{ label: '专业', prop: 'major', align: 'center' }, { label: '专业', prop: 'specialty_id_name', align: 'center' },
{ label: '班级', prop: 'class', align: 'center' }, { label: '班级', prop: 'class_id_name', align: 'center' },
{ label: '身份证号', prop: 'idNumber', align: 'center' }, { label: '身份证号', prop: 'id_number', align: 'center' },
{ label: '有效状态', prop: 'status', align: 'center' }, { label: '有效状态', prop: 'status_name', align: 'center' },
{ label: '更新时间', prop: 'update_time', align: 'center' }, { label: '更新时间', prop: 'updated_time', align: 'center' },
{ label: '操作', slots: 'table-operate', align: 'center', fixed: 'right' } { label: '操作', slots: 'table-operate', align: 'center', fixed: 'right' }
], ]
data: [{ name: '111' }]
} }
}) })
...@@ -46,12 +50,13 @@ const handleRefresh = () => { ...@@ -46,12 +50,13 @@ const handleRefresh = () => {
const handleAddStudent = () => { const handleAddStudent = () => {
isShowAddDialog.value = true isShowAddDialog.value = true
title.value = '新增学生' title.value = '新增学生'
isEdit.value = '0'
} }
// 编辑学生 // 编辑学生
const handleEdit = (row: any) => { const handleEdit = (row: any) => {
isShowAddDialog.value = true isShowAddDialog.value = true
title.value = '编辑学生' title.value = '编辑学生'
isEdit.value = '1'
id.value = row.id id.value = row.id
} }
// 查看详情 // 查看详情
...@@ -59,6 +64,15 @@ const handleDetail = (row: any) => { ...@@ -59,6 +64,15 @@ const handleDetail = (row: any) => {
isShowAddDialog.value = true isShowAddDialog.value = true
title.value = '查看详情' title.value = '查看详情'
id.value = row.id id.value = row.id
isEdit.value = '2'
}
// 批量导入
const handleImport = () => {
isShowImportDialog.value = true
}
// 导出
const handleExport = () => {
console.log('000')
} }
</script> </script>
...@@ -66,8 +80,14 @@ const handleDetail = (row: any) => { ...@@ -66,8 +80,14 @@ const handleDetail = (row: any) => {
<AppCard title="学生管理"> <AppCard title="学生管理">
<AppList v-bind="listOptions" ref="appList" border stripe style="margin-top: 30px"> <AppList v-bind="listOptions" ref="appList" border stripe style="margin-top: 30px">
<el-button type="primary" round @click="handleAddStudent">新增学生</el-button> <el-button type="primary" round @click="handleAddStudent">新增学生</el-button>
<el-button type="primary" round @click="isShowImportDialog = true">批量导入</el-button> <el-button type="primary" round @click="handleImport">批量导入</el-button>
<el-button type="primary" round>导出</el-button> <el-button type="primary" round @click="handleExport">导出</el-button>
<template #filter-department="{ params }">
<div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">所属部门/学校:</div>
<el-select @change="handleRefresh" clearable v-model="params.organ_id">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</template>
<template #table-operate="{ row }"> <template #table-operate="{ row }">
<el-space> <el-space>
<el-link type="primary" plain @click="handleDetail(row)">查看</el-link> <el-link type="primary" plain @click="handleDetail(row)">查看</el-link>
...@@ -82,6 +102,7 @@ const handleDetail = (row: any) => { ...@@ -82,6 +102,7 @@ const handleDetail = (row: any) => {
v-model:isShowAddDialog="isShowAddDialog" v-model:isShowAddDialog="isShowAddDialog"
:id="id" :id="id"
:title="title" :title="title"
:isEdit="isEdit"
@create="handleRefresh" @create="handleRefresh"
/> />
<ImportStudent v-if="isShowImportDialog" v-model:isShowImportDialog="isShowImportDialog" @create="handleRefresh" /> <ImportStudent v-if="isShowImportDialog" v-model:isShowImportDialog="isShowImportDialog" @create="handleRefresh" />
......
...@@ -208,3 +208,4 @@ export function getLiveList(params: { name: string; page?: number; ['per-page']? ...@@ -208,3 +208,4 @@ export function getLiveList(params: { name: string; page?: number; ['per-page']?
export function getMajorList(params: { name: string; page?: number; ['per-page']?: string }) { export function getMajorList(params: { name: string; page?: number; ['per-page']?: string }) {
return httpRequest.get('/api/resource/v1/course/course/search-specialty', { params }) return httpRequest.get('/api/resource/v1/course/course/search-specialty', { params })
} }
<script setup lang="ts"> <script setup lang="ts">
import { createCourse, getCourseDetails, updateCourse, getMajorList } from '../api' import { createCourse, getCourseDetails, updateCourse } from '../api'
// getMajorList
// setStatus // setStatus
import { useGetCategoryList } from '@/composables/useGetCategoryList' import { useGetCategoryList } from '@/composables/useGetCategoryList'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
...@@ -19,8 +20,8 @@ const route = useRoute() ...@@ -19,8 +20,8 @@ const route = useRoute()
const router = useRouter() const router = useRouter()
const id = route.query.id as string const id = route.query.id as string
const majorList: any = ref([]) // const majorList: any = ref([])
const allMajorList: any = ref([]) // const allMajorList: any = ref([])
// is 编辑 新建 // is 编辑 新建
const isUpdate = $computed(() => { const isUpdate = $computed(() => {
...@@ -64,8 +65,8 @@ const form = reactive<Record<string, any>>({ ...@@ -64,8 +65,8 @@ const form = reactive<Record<string, any>>({
previous_preparation: '', previous_preparation: '',
target: '', target: '',
exam_id: '', exam_id: '',
live_id: '', live_id: ''
specialty_id: '' // specialty_id: ''
}) })
// 表单验证 // 表单验证
...@@ -78,8 +79,8 @@ const rules = reactive<FormRules>({ ...@@ -78,8 +79,8 @@ const rules = reactive<FormRules>({
{ required: true, message: '请输入学分' }, { required: true, message: '请输入学分' },
{ pattern: /\d/, message: '请输入数字' } { pattern: /\d/, message: '请输入数字' }
], ],
lecturer_id: [{ required: true, message: '请添加课程讲师' }], lecturer_id: [{ required: true, message: '请添加课程讲师' }]
specialty_id: [{ required: true, message: '请选择适用专业' }] // specialty_id: [{ required: true, message: '请选择适用专业' }]
}) })
// 课程封面dialog // 课程封面dialog
...@@ -167,21 +168,21 @@ function handleUpdate() { ...@@ -167,21 +168,21 @@ function handleUpdate() {
}) })
} }
const handleMajorList = (query: string) => { // const handleMajorList = (query: string) => {
if (query) { // if (query) {
getMajorList({ name: query, 'per-page': '100' }).then((res: any) => { // getMajorList({ name: query, 'per-page': '100' }).then((res: any) => {
majorList.value = res.data.list // majorList.value = res.data.list
majorList.value.forEach((item: any) => { // majorList.value.forEach((item: any) => {
const findItem = allMajorList.value.find((cItem: any) => cItem.id === item.id) // const findItem = allMajorList.value.find((cItem: any) => cItem.id === item.id)
if (!findItem) { // if (!findItem) {
allMajorList.value.push(item) // allMajorList.value.push(item)
} // }
}) // })
}) // })
} else { // } else {
majorList.value = [] // majorList.value = []
} // }
} // }
</script> </script>
<template> <template>
...@@ -218,7 +219,7 @@ const handleMajorList = (query: string) => { ...@@ -218,7 +219,7 @@ const handleMajorList = (query: string) => {
<el-form-item label="课程学分" prop="credit"> <el-form-item label="课程学分" prop="credit">
<el-input v-model="form.credit" maxlength="3" /> <el-input v-model="form.credit" maxlength="3" />
</el-form-item> </el-form-item>
<el-form-item label="适用专业" prop="specialty_id"> <!-- <el-form-item label="适用专业" prop="specialty_id">
<el-select <el-select
v-model="form.specialty_id" v-model="form.specialty_id"
placeholder="请选择适用专业" placeholder="请选择适用专业"
...@@ -236,7 +237,7 @@ const handleMajorList = (query: string) => { ...@@ -236,7 +237,7 @@ const handleMajorList = (query: string) => {
:value="item.id" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item> -->
</el-form> </el-form>
</div> </div>
<el-form <el-form
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论