Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-resource
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-resource
Commits
d40826b4
提交
d40826b4
authored
7月 19, 2022
作者:
matian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore:部分权限添加以及页面调整
上级
61321542
显示空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
330 行增加
和
110 行删除
+330
-110
menus.ts
src/assets/menus.ts
+4
-4
AddClass.vue
src/modules/admin/class/components/AddClass.vue
+26
-19
AddStudentDialog.vue
src/modules/admin/class/components/AddStudentDialog.vue
+3
-1
ClassStudents.vue
src/modules/admin/class/components/ClassStudents.vue
+8
-6
RelatedTerm.vue
src/modules/admin/class/components/RelatedTerm.vue
+4
-4
List.vue
src/modules/admin/class/views/List.vue
+40
-8
AddPro.vue
src/modules/admin/pro/components/AddPro.vue
+21
-13
List.vue
src/modules/admin/pro/views/List.vue
+26
-5
AddSemCourse.vue
src/modules/admin/semester/components/AddSemCourse.vue
+22
-2
AddSemester.vue
src/modules/admin/semester/components/AddSemester.vue
+12
-3
SemesterCourse.vue
src/modules/admin/semester/components/SemesterCourse.vue
+2
-2
List.vue
src/modules/admin/semester/views/List.vue
+45
-8
AddStaff.vue
src/modules/admin/staff/components/AddStaff.vue
+38
-12
List.vue
src/modules/admin/staff/views/List.vue
+37
-13
api.ts
src/modules/admin/student/api.ts
+1
-1
AddStudent.vue
src/modules/admin/student/components/AddStudent.vue
+2
-2
List.vue
src/modules/admin/student/views/List.vue
+39
-7
没有找到文件。
src/assets/menus.ts
浏览文件 @
d40826b4
...
...
@@ -94,13 +94,13 @@ export const menus: IMenuItem[] = [
path
:
'/admin/teacher'
},
{
tag
:
'v1-
backend-lectur
er-list'
,
tag
:
'v1-
learning-teach
er-list'
,
icon
:
School
,
name
:
'教工用户管理'
,
path
:
'/admin/staff'
},
{
tag
:
'v1-
backend-lecturer
-list'
,
tag
:
'v1-
learning-student
-list'
,
icon
:
User
,
name
:
'学生管理'
,
path
:
'/admin/student'
...
...
@@ -112,13 +112,13 @@ export const menus: IMenuItem[] = [
path
:
'/admin/pro'
},
{
tag
:
'v1-
backend-lecturer
-list'
,
tag
:
'v1-
learning-class
-list'
,
icon
:
School
,
name
:
'班级管理'
,
path
:
'/admin/class'
},
{
tag
:
'v1-
backend-lectur
er-list'
,
tag
:
'v1-
learning-semest
er-list'
,
icon
:
Guide
,
name
:
'学期管理'
,
path
:
'/admin/semester'
...
...
src/modules/admin/class/components/AddClass.vue
浏览文件 @
d40826b4
...
...
@@ -10,6 +10,7 @@ const emit = defineEmits<Emits>()
const
departmentList
:
any
=
useProjectList
(
''
,
'79806610719731712'
).
departmentList
const
startYearList
=
store
.
getMapValuesByKey
(
'class_start_year'
)
const
statusList
=
store
.
getMapValuesByKey
(
'system_status'
)
const
form
=
reactive
({
code
:
''
,
...
...
@@ -21,11 +22,11 @@ const form = reactive({
status
:
'1'
})
const
rules
=
reactive
<
FormRules
>
({
code
:
[{
required
:
true
,
message
:
'请输入班级代码'
,
trigger
:
'
change
'
}],
code
:
[{
required
:
true
,
message
:
'请输入班级代码'
,
trigger
:
'
blur
'
}],
name
:
[{
required
:
true
,
message
:
'请输入班级名称'
,
trigger
:
'blur'
}],
organ_id
:
[{
required
:
true
,
message
:
'请选择所属部门/学校'
,
trigger
:
'change'
}],
teacher_id
:
[{
required
:
true
,
message
:
'请选择班主任'
,
trigger
:
'change'
}],
specialty_id
:
[{
required
:
true
,
message
:
'请选择所属专业'
,
trigger
:
'
blur
'
}],
specialty_id
:
[{
required
:
true
,
message
:
'请选择所属专业'
,
trigger
:
'
change
'
}],
start_year
:
[{
required
:
true
,
message
:
'请选择入学年份'
,
trigger
:
'change'
}],
status
:
[{
required
:
true
,
message
:
'请选择状态'
,
trigger
:
'change'
}]
})
...
...
@@ -126,28 +127,40 @@ getProList({ name: '', 'per-page': '100' }).then((res: any) => {
<el-dialog
:model-value=
"isShowClassDialog"
draggable
:before-close=
"handleCancel"
:title=
"props.title"
width=
"30%"
>
<el-form
:model=
"form"
label-position=
"right"
label-width=
"auto"
:rules=
"rules"
ref=
"ruleFormRef"
>
<el-form-item
label=
"班级代码:"
prop=
"code"
>
<el-input
v-model=
"form.code"
:disabled=
"props.
title === '查看详情
'"
></el-input>
<el-input
v-model=
"form.code"
:disabled=
"props.
isEdit === '2
'"
></el-input>
</el-form-item>
<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.
isEdit === '2
'"
></el-input>
</el-form-item>
<el-form-item
label=
"所属部门/学校:"
prop=
"organ_id"
>
<el-select
clearable
v-model=
"form.organ_id"
:disabled=
"props.title === '查看详情'"
style=
"width: 100%
"
>
<el-select
clearable
v-model=
"form.organ_id"
style=
"width: 100%"
:disabled=
"props.isEdit === '2'
"
>
<el-option
v-for=
"item in departmentList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"班主任:"
prop=
"teacher_id"
>
<el-select
v-model=
"form.teacher_id"
clearable
placeholder=
"请输入班主任"
style=
"width: 230px"
>
<el-select
v-model=
"form.teacher_id"
clearable
placeholder=
"请输入班主任"
style=
"width: 230px"
:disabled=
"props.isEdit === '2'"
>
<el-option
v-for=
"item in teacherList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"所属专业:"
prop=
"specialty_id"
>
<el-select
v-model=
"form.specialty_id"
clearable
placeholder=
"请输入所属专业"
style=
"width: 230px"
>
<el-select
v-model=
"form.specialty_id"
clearable
placeholder=
"请输入所属专业"
style=
"width: 230px"
:disabled=
"props.isEdit === '2'"
>
<el-option
v-for=
"item in proList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"入学年份:"
prop=
"start_year"
>
<el-select
v-model=
"form.start_year"
placeholder=
"请选择所属部门/学校"
:disabled=
"props.
title === '查看详情
'"
>
<el-select
v-model=
"form.start_year"
placeholder=
"请选择所属部门/学校"
:disabled=
"props.
isEdit === '2
'"
>
<el-option
v-for=
"(item, index) in startYearList"
:key=
"index"
...
...
@@ -156,19 +169,13 @@ getProList({ name: '', 'per-page': '100' }).then((res: any) => {
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-switch
size=
"large"
v-model=
"form.status"
active-value=
"1"
inactive-value=
"0"
inline-prompt
style=
"--el-switch-on-color: #aa1941"
:disabled=
"props.title === '查看详情'"
></el-switch>
<el-form-item
label=
"生效状态:"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
:disabled=
"props.isEdit === '2'"
>
<el-radio
v-for=
"(item, index) in statusList"
:key=
"index"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template
#
footer
v-if=
"props.isEdit
=== '1
'"
>
<template
#
footer
v-if=
"props.isEdit
!== '2
'"
>
<span>
<el-button
@
click=
"handleCancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm(ruleFormRef)"
>
确认
</el-button>
...
...
src/modules/admin/class/components/AddStudentDialog.vue
浏览文件 @
d40826b4
...
...
@@ -87,7 +87,9 @@ const handleCancel = () => {
style=
"margin-top: 30px"
@
selection-change=
"handleSelectChange"
>
<el-button
type=
"primary"
round
@
click=
"handleAddStu"
>
关联选择学生
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleAddStu"
v-permission=
"'v1-learning-class-add-students'"
>
关联选择学生
</el-button
>
</AppList>
</div>
<!-- 新增学生 -->
...
...
src/modules/admin/class/components/ClassStudents.vue
浏览文件 @
d40826b4
...
...
@@ -37,7 +37,7 @@ const listOptions = $computed(() => {
{
label
:
'序号'
,
type
:
'index'
,
align
:
'center'
},
{
label
:
'学号'
,
prop
:
'sno_number'
,
align
:
'center'
},
{
label
:
'姓名'
,
prop
:
'name'
,
align
:
'center'
},
{
label
:
'性别'
,
prop
:
'gender'
,
align
:
'center'
},
{
label
:
'性别'
,
prop
:
'gender
_name
'
,
align
:
'center'
},
{
label
:
'有效状态'
,
prop
:
'status_name'
,
align
:
'center'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
,
align
:
'center'
},
{
label
:
'操作'
,
slots
:
'table-operate'
,
align
:
'center'
,
minWidth
:
'200'
,
fixed
:
'right'
}
...
...
@@ -76,16 +76,18 @@ const handleRefresh = () => {
<div
style=
"overflow-y: auto; height: 70vh"
>
<el-descriptions>
<el-descriptions-item
label=
"班级代码:"
>
{{
classInfo
?.
code
}}
</el-descriptions-item>
<el-descriptions-item
label=
"班级名称"
>
{{
classInfo
?.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"班级名称
:
"
>
{{
classInfo
?.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属部门/学校:"
>
{{
classInfo
?.
organ_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"班 主 任:"
>
<el-tag
size=
"small"
>
{{
classInfo
?.
teacher_id_name
}}
</el-tag>
{{
classInfo
?.
teacher_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属专业"
>
{{
classInfo
?.
specialty_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"入学年份"
>
{{
classInfo
?.
start_year_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属专业
:
"
>
{{
classInfo
?.
specialty_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"入学年份
:
"
>
{{
classInfo
?.
start_year_name
}}
</el-descriptions-item>
</el-descriptions>
<AppList
v-bind=
"listOptions"
ref=
"appList"
border
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddStu"
>
添加学生
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleAddStu"
v-permission=
"'v1-learning-class-add-students'"
>
添加学生
</el-button
>
<template
#
table-operate=
"
{ row }">
<el-space>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
>
查看
</el-link>
...
...
src/modules/admin/class/components/RelatedTerm.vue
浏览文件 @
d40826b4
...
...
@@ -79,13 +79,13 @@ const handleFresh = () => {
<div
style=
"overflow-y: auto; height: 70vh"
>
<el-descriptions>
<el-descriptions-item
label=
"班级代码:"
>
{{
classInfo
?.
code
}}
</el-descriptions-item>
<el-descriptions-item
label=
"班级名称"
>
{{
classInfo
?.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"班级名称
:
"
>
{{
classInfo
?.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属部门/学校:"
>
{{
classInfo
?.
organ_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"班 主 任:"
>
<el-tag
size=
"small"
>
{{
classInfo
?.
teacher_id_name
}}
</el-tag>
{{
classInfo
?.
teacher_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属专业"
>
{{
classInfo
?.
specialty_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"入学年份"
>
{{
classInfo
?.
start_year_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属专业
:
"
>
{{
classInfo
?.
specialty_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"入学年份
:
"
>
{{
classInfo
?.
start_year_name
}}
</el-descriptions-item>
</el-descriptions>
<AppList
v-bind=
"listOptions"
ref=
"appList"
border
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddTerm"
>
添加学期
</el-button>
...
...
src/modules/admin/class/views/List.vue
浏览文件 @
d40826b4
<
script
setup
lang=
"ts"
>
import
{
getClassList
}
from
'../api'
import
{
ElMessage
}
from
'element-plus'
import
AddClass
from
'../components/AddClass.vue'
import
ClassStudents
from
'../components/ClassStudents.vue'
import
RelatedTerm
from
'../components/RelatedTerm.vue'
import
{
getClassList
,
updateClass
}
from
'../api'
// import { useMapStore } from '@/stores/map'
// const store = useMapStore()
const
appList
=
ref
()
const
id
=
ref
(
''
)
const
title
=
ref
(
''
)
...
...
@@ -29,6 +29,7 @@ const listOptions = $computed(() => {
{
label
:
'班主任'
,
prop
:
'teacher_id_name'
,
align
:
'center'
},
{
label
:
'专业'
,
prop
:
'specialty_id_name'
,
align
:
'center'
},
{
label
:
'入学年份'
,
prop
:
'start_year_name'
,
align
:
'center'
},
{
label
:
'生效状态'
,
slots
:
'status'
,
align
:
'center'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
,
align
:
'center'
},
{
label
:
'操作'
,
slots
:
'table-operate'
,
align
:
'center'
,
minWidth
:
'300'
,
fixed
:
'right'
}
]
...
...
@@ -60,6 +61,16 @@ const handleRelating = (row: any) => {
isRelatingDialog
.
value
=
true
id
.
value
=
row
.
id
}
// 更新班级状态
const
handleChangeStatus
=
(
row
:
any
)
=>
{
if
(
row
.
id
!==
undefined
)
{
const
params
:
any
=
Object
.
assign
({},
row
)
updateClass
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'更新班级成功'
)
handleFresh
()
})
}
}
const
handleFresh
=
()
=>
{
appList
.
value
.
refetch
()
}
...
...
@@ -68,13 +79,34 @@ const handleFresh = () => {
<
template
>
<AppCard
title=
"班级管理"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
border
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddClass"
>
新增班级
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleAddClass"
v-permission=
"'v1-learning-class-create'"
>
新增班级
</el-button
>
<template
#
status=
"
{ row }">
<el-switch
size=
"large"
v-model=
"row.status"
active-value=
"1"
inactive-value=
"0"
inline-prompt
style=
"--el-switch-on-color: #aa1941"
@
change=
"handleChangeStatus(row)"
></el-switch>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
>
查看
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
>
编辑
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleClassStu(row)"
>
班级学生
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleRelating(row)"
>
关联学期
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
v-permission=
"'v1-learning-class-view'"
>
查看
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
v-permission=
"'v1-learning-class-update'"
>
编辑
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleClassStu(row)"
v-permission=
"'v1-learning-class-students'"
>
班级学生
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleRelating(row)"
v-permission=
"'v1-learning-class-add-semesters'"
>
关联学期
</el-link
>
</el-space>
</
template
>
</AppList>
...
...
src/modules/admin/pro/components/AddPro.vue
浏览文件 @
d40826b4
...
...
@@ -12,6 +12,7 @@ const educationList = store.getMapValuesByKey('specialty_education_background')
const
schoolingList
=
store
.
getMapValuesByKey
(
'specialty_length_of_schooling'
)
const
degreeCategoryList
=
store
.
getMapValuesByKey
(
'specialty_degree_category'
)
const
specialtyDegreeList
=
store
.
getMapValuesByKey
(
'specialty_degree'
)
const
statusList
=
store
.
getMapValuesByKey
(
'system_status'
)
const
form
=
reactive
({
code
:
''
,
...
...
@@ -20,16 +21,18 @@ const form = reactive({
education_background
:
'1'
,
length_of_schooling
:
'1'
,
degree_category
:
''
,
degree
:
'1'
degree
:
'1'
,
status
:
'1'
})
const
rules
=
reactive
<
FormRules
>
({
code
:
[{
required
:
true
,
message
:
'请输入专业代码'
,
trigger
:
'
change
'
}],
code
:
[{
required
:
true
,
message
:
'请输入专业代码'
,
trigger
:
'
blur
'
}],
name
:
[{
required
:
true
,
message
:
'请输入专业名称'
,
trigger
:
'blur'
}],
category
:
[{
required
:
true
,
message
:
'请选择专业类别'
,
trigger
:
'change'
}],
education_background
:
[{
required
:
true
,
message
:
'请选择学历'
,
trigger
:
'
blur
'
}],
education_background
:
[{
required
:
true
,
message
:
'请选择学历'
,
trigger
:
'
change
'
}],
length_of_schooling
:
[{
required
:
true
,
message
:
'请选择学制'
,
trigger
:
'change'
}],
degree_category
:
[{
required
:
true
,
message
:
'请选择学位门类'
,
trigger
:
'blur'
}],
degree
:
[{
required
:
true
,
message
:
'请选择学位'
,
trigger
:
'blur'
}]
degree_category
:
[{
required
:
true
,
message
:
'请选择学位门类'
,
trigger
:
'change'
}],
degree
:
[{
required
:
true
,
message
:
'请选择学位'
,
trigger
:
'change'
}],
status
:
[{
required
:
true
,
message
:
'请选择生效状态'
,
trigger
:
'change'
}]
})
const
props
=
defineProps
({
isShowProDialog
:
{
...
...
@@ -95,13 +98,13 @@ if (props.isEdit === '2' || props.isEdit === '1') {
<el-dialog
:model-value=
"isShowProDialog"
draggable
:before-close=
"handleCancel"
:title=
"props.title"
width=
"30%"
>
<el-form
:model=
"form"
label-position=
"right"
label-width=
"auto"
:rules=
"rules"
ref=
"ruleFormRef"
>
<el-form-item
label=
"专业代码:"
prop=
"code"
>
<el-input
v-model=
"form.code"
:disabled=
"props.
title === '查看详情
'"
></el-input>
<el-input
v-model=
"form.code"
:disabled=
"props.
isEdit === '2
'"
></el-input>
</el-form-item>
<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.
isEdit === '2
'"
></el-input>
</el-form-item>
<el-form-item
label=
"专业类别:"
prop=
"category"
>
<el-select
v-model=
"form.category"
placeholder=
"请选择专业类别"
:disabled=
"props.
title === '查看详情
'"
>
<el-select
v-model=
"form.category"
placeholder=
"请选择专业类别"
:disabled=
"props.
isEdit === '2
'"
>
<el-option
v-for=
"(item, index) in categoryList"
:key=
"index"
...
...
@@ -111,17 +114,17 @@ if (props.isEdit === '2' || props.isEdit === '1') {
</el-select>
</el-form-item>
<el-form-item
label=
"学历:"
prop=
"education_background"
>
<el-radio-group
v-model=
"form.education_background"
:disabled=
"props.
title === '查看详情
'"
>
<el-radio-group
v-model=
"form.education_background"
:disabled=
"props.
isEdit === '2
'"
>
<el-radio
v-for=
"item in educationList"
:key=
"item.id"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"学制:"
prop=
"length_of_schooling"
>
<el-radio-group
v-model=
"form.length_of_schooling"
:disabled=
"props.
title === '查看详情
'"
>
<el-radio-group
v-model=
"form.length_of_schooling"
:disabled=
"props.
isEdit === '2
'"
>
<el-radio
v-for=
"item in schoolingList"
:key=
"item.id"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"学位门类:"
prop=
"degree_category"
>
<el-select
v-model=
"form.degree_category"
:disabled=
"props.
title === '查看详情
'"
placeholder=
"请选择学位门类"
>
<el-select
v-model=
"form.degree_category"
:disabled=
"props.
isEdit === '2
'"
placeholder=
"请选择学位门类"
>
<el-option
v-for=
"(item, index) in degreeCategoryList"
:key=
"index"
...
...
@@ -131,12 +134,17 @@ if (props.isEdit === '2' || props.isEdit === '1') {
</el-select>
</el-form-item>
<el-form-item
label=
"学位:"
prop=
"degree"
>
<el-radio-group
v-model=
"form.degree"
:disabled=
"props.
title === '查看详情
'"
>
<el-radio-group
v-model=
"form.degree"
:disabled=
"props.
isEdit === '2
'"
>
<el-radio
v-for=
"item in specialtyDegreeList"
:key=
"item.id"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"生效状态:"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
:disabled=
"props.isEdit === '2'"
>
<el-radio
v-for=
"item in statusList"
:key=
"item.id"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template
#
footer
v-if=
"props.isEdit !== '
1
'"
>
<template
#
footer
v-if=
"props.isEdit !== '
2
'"
>
<span>
<el-button
@
click=
"handleCancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm(ruleFormRef)"
>
确认
</el-button>
...
...
src/modules/admin/pro/views/List.vue
浏览文件 @
d40826b4
<
script
setup
lang=
"ts"
>
import
{
getProList
}
from
'../api'
import
{
ElMessage
}
from
'element-plus'
import
{
getProList
,
updatePro
}
from
'../api'
import
AddPro
from
'../components/AddPro.vue'
// import { useMapStore } from '@/stores/map'
// const store = useMapStore()
const
appList
=
ref
()
const
title
=
ref
(
''
)
const
id
=
ref
(
''
)
...
...
@@ -21,6 +21,7 @@ const listOptions = $computed(() => {
{
label
:
'学制'
,
prop
:
'length_of_schooling_name'
,
align
:
'center'
},
{
label
:
'学位门类'
,
prop
:
'degree_category_name'
,
align
:
'center'
},
{
label
:
'学位'
,
prop
:
'degree_name'
,
align
:
'center'
},
{
label
:
'生效状态'
,
slots
:
'status'
,
align
:
'center'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
,
align
:
'center'
},
{
label
:
'操作'
,
slots
:
'table-operate'
,
align
:
'center'
}
]
...
...
@@ -35,23 +36,43 @@ const handleDetail = (row: any) => {
isShowProDialog
.
value
=
true
title
.
value
=
'查看详情'
id
.
value
=
row
.
id
isEdit
.
value
=
'
1
'
isEdit
.
value
=
'
2
'
}
const
handleEdit
=
(
row
:
any
)
=>
{
isShowProDialog
.
value
=
true
title
.
value
=
'编辑专业'
id
.
value
=
row
.
id
isEdit
.
value
=
'
2
'
isEdit
.
value
=
'
1
'
}
const
handleFresh
=
()
=>
{
appList
.
value
.
refetch
()
}
const
handleChangeStatus
=
(
row
:
any
)
=>
{
if
(
row
.
id
!==
undefined
)
{
const
params
:
any
=
Object
.
assign
({},
row
)
updatePro
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'更新专业成功'
)
handleFresh
()
})
}
}
</
script
>
<
template
>
<AppCard
title=
"专业管理"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
border
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddPro"
>
新增专业
</el-button>
<template
#
status=
"
{ row }">
<el-switch
size=
"large"
v-model=
"row.status"
active-value=
"1"
inactive-value=
"0"
inline-prompt
style=
"--el-switch-on-color: #aa1941"
@
change=
"handleChangeStatus(row)"
></el-switch>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
>
查看
</el-link>
...
...
src/modules/admin/semester/components/AddSemCourse.vue
浏览文件 @
d40826b4
<
script
lang=
"ts"
setup
>
import
{
ElMessage
}
from
'element-plus'
import
{
useGetCategoryList
}
from
'@/composables/useGetCategoryList'
import
{
getRelationSemCourse
,
relationSemCourse
}
from
'../api'
...
...
@@ -16,8 +17,12 @@ interface Emits {
(
e
:
'update:isShowCourse'
,
isShowCourse
:
boolean
):
void
(
e
:
'create'
):
void
}
const
appList
=
ref
()
const
semInfo
:
any
=
ref
({})
const
multiSelection
=
ref
([])
// 下拉选择tree 视频分类
let
{
list
:
selectTree
}
=
useGetCategoryList
()
const
defaultProps
=
{
children
:
'children'
,
label
:
'category_name'
,
value
:
'id'
}
const
listOptions
=
$computed
(()
=>
{
return
{
...
...
@@ -30,7 +35,7 @@ const listOptions = $computed(() => {
}
},
filters
:
[
{
type
:
'select'
,
prop
:
'classification'
,
label
:
'课程分类:'
,
placeholder
:
'课程分类
'
},
{
type
:
'select'
,
slots
:
'course-category
'
},
{
type
:
'input'
,
prop
:
'name'
,
label
:
'课程名称:'
,
placeholder
:
'课程名称'
}
],
columns
:
[
...
...
@@ -59,7 +64,6 @@ const handleAddStu = () => {
relationSemCourse
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'关联课程成功'
)
emit
(
'update:isShowCourse'
,
false
)
emit
(
'create'
)
})
console
.
log
(
111
)
...
...
@@ -68,6 +72,9 @@ const handleAddStu = () => {
const
handleCancel
=
()
=>
{
emit
(
'update:isShowCourse'
,
false
)
}
const
handleFresh
=
()
=>
{
appList
.
value
.
refetch
()
}
</
script
>
<
template
>
<el-dialog
:model-value=
"isShowCourse"
draggable
title=
"关联选择课程"
width=
"50%"
:before-close=
"handleCancel"
>
...
...
@@ -90,6 +97,19 @@ const handleCancel = () => {
@
selection-change=
"handleSelectChange"
>
<el-button
type=
"primary"
round
@
click=
"handleAddStu"
>
关联选择课程
</el-button>
<template
#
course-category=
"
{ params }">
课程分类:
<el-tree-select
:render-after-expand=
"false"
:props=
"defaultProps"
v-model=
"params.classification"
:data=
"selectTree"
clearable
placeholder=
"课程分类"
@
change=
"handleFresh"
/>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<router-link
:to=
"`/course/my/view?id=$
{row.id}`" target="_blank">
...
...
src/modules/admin/semester/components/AddSemester.vue
浏览文件 @
d40826b4
...
...
@@ -2,24 +2,28 @@
import
type
{
FormInstance
,
FormRules
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
{
useMapStore
}
from
'@/stores/map'
import
{
useProjectList
}
from
'@/composables/useGetProjectList'
import
{
getSemDetail
,
addSem
,
updateSem
}
from
'../api'
const
store
=
useMapStore
()
const
emit
=
defineEmits
<
Emits
>
()
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
departmentList
:
any
=
useProjectList
(
''
,
'79806610719731712'
).
departmentList
const
statusList
=
store
.
getMapValuesByKey
(
'system_status'
)
const
form
=
reactive
({
name
:
''
,
organ_id
:
''
,
start_time
:
''
,
end_time
:
''
,
length
:
''
length
:
''
,
status
:
'1'
})
const
rules
=
reactive
<
FormRules
>
({
name
:
[{
required
:
true
,
message
:
'请输入学期名称'
,
trigger
:
'blur'
}],
organ_id
:
[{
required
:
true
,
message
:
'请选择所属部门/学校'
,
trigger
:
'change'
}]
organ_id
:
[{
required
:
true
,
message
:
'请选择所属部门/学校'
,
trigger
:
'change'
}],
status
:
[{
required
:
true
,
message
:
'请选择生效状态'
,
trigger
:
'change'
}]
})
const
props
=
defineProps
({
isShowAddSemDialog
:
{
...
...
@@ -111,6 +115,11 @@ if (props.isEdit === '2' || props.isEdit === '1') {
<el-form-item
label=
"教学周:"
prop=
"length"
>
<el-input
v-model=
"form.length"
:disabled=
"props.isEdit === '2'"
></el-input>
</el-form-item>
<el-form-item
label=
"生效状态:"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
:disabled=
"props.isEdit === '2'"
>
<el-radio
v-for=
"(item, id) in statusList"
:key=
"id"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</el-form>
<template
#
footer
v-if=
"props.isEdit !== '2'"
>
...
...
src/modules/admin/semester/components/SemesterCourse.vue
浏览文件 @
d40826b4
...
...
@@ -81,9 +81,9 @@ const handleFresh = () => {
<el-descriptions-item
label=
"所属部门/学校:"
>
{{
semInfo
.
organ_id_name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"开始日期:"
>
{{
semInfo
.
start_time
}}
</el-descriptions-item>
<el-descriptions-item
label=
"结束日期:"
>
<el-tag
size=
"small"
>
{{
semInfo
.
end_time
}}
</el-tag>
{{
semInfo
.
end_time
}}
</el-descriptions-item>
<el-descriptions-item
label=
"教学周"
>
{{
semInfo
.
length
}}
</el-descriptions-item>
<el-descriptions-item
label=
"教学周
:
"
>
{{
semInfo
.
length
}}
</el-descriptions-item>
</el-descriptions>
<AppList
v-bind=
"listOptions"
ref=
"appList"
border
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddCourse"
>
添加课程
</el-button>
...
...
src/modules/admin/semester/views/List.vue
浏览文件 @
d40826b4
<
script
setup
lang=
"ts"
>
import
{
getSemList
}
from
'../api'
import
{
ElMessage
}
from
'element-plus'
import
{
useProjectList
}
from
'@/composables/useGetProjectList'
import
AddSemester
from
'../components/AddSemester.vue'
import
SemesterCourse
from
'../components/SemesterCourse.vue'
// import { useMapStore } from '@/stores/map'
// const store = useMapStore()
import
{
getSemList
,
updateSem
}
from
'../api'
const
departmentList
:
any
=
useProjectList
(
''
,
'79806610719731712'
).
departmentList
const
appList
=
ref
()
const
title
=
ref
(
''
)
const
id
=
ref
(
''
)
...
...
@@ -15,7 +17,7 @@ const listOptions = $computed(() => {
remote
:
{
httpRequest
:
getSemList
,
params
:
{
name
:
''
,
organ_id
:
''
}
},
filters
:
[
{
type
:
'input'
,
prop
:
'name'
,
label
:
'学期名称:'
,
placeholder
:
'学期名称'
},
{
type
:
'
input'
,
prop
:
'organ_id'
,
label
:
'所属部门/学校:'
,
placeholder
:
'所属部门/学校
'
}
{
type
:
'
select'
,
slots
:
'filter-department
'
}
],
columns
:
[
{
label
:
'序号'
,
type
:
'index'
,
align
:
'center'
},
...
...
@@ -24,6 +26,7 @@ const listOptions = $computed(() => {
{
label
:
'学期开始日期'
,
prop
:
'start_time'
,
align
:
'center'
},
{
label
:
'学期结束日期'
,
prop
:
'end_time'
,
align
:
'center'
},
{
label
:
'教学周'
,
prop
:
'length'
,
align
:
'center'
},
{
label
:
'生效状态'
,
slots
:
'status'
,
align
:
'center'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
,
align
:
'center'
},
{
label
:
'操作'
,
slots
:
'table-operate'
,
align
:
'center'
}
]
...
...
@@ -54,17 +57,51 @@ const handleCourse = (row: any) => {
const
handleFresh
=
()
=>
{
appList
.
value
.
refetch
()
}
const
handleChangeStatus
=
(
row
:
any
)
=>
{
if
(
row
.
id
!==
undefined
)
{
const
params
:
any
=
Object
.
assign
({},
row
)
updateSem
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'更新学期成功'
)
handleFresh
()
})
}
}
</
script
>
<
template
>
<AppCard
title=
"学期管理"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
border
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddSemester"
>
新增学期
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleAddSemester"
v-permission=
"'v1-learning-semester-create'"
>
新增学期
</el-button
>
<template
#
filter-department=
"
{ params }">
<div
class=
"name"
style=
"font-size: 14px; color: #606266; padding-right: 12px"
>
所属部门/学校:
</div>
<el-select
@
change=
"handleFresh"
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
#
status=
"{ row }"
>
<el-switch
size=
"large"
v-model=
"row.status"
active-value=
"1"
inactive-value=
"0"
inline-prompt
style=
"--el-switch-on-color: #aa1941"
@
change=
"handleChangeStatus(row)"
></el-switch>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
>
查看
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
>
编辑
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleCourse(row)"
>
关联课程
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
v-permission=
"'v1-learning-semester-view'"
>
查看
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
v-permission=
"'v1-learning-semester-update'"
>
编辑
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleCourse(row)"
v-permission=
"'v1-learning-semester-add-courses'"
>
关联课程
</el-link
>
</el-space>
</
template
>
</AppList>
...
...
src/modules/admin/staff/components/AddStaff.vue
浏览文件 @
d40826b4
...
...
@@ -3,8 +3,12 @@ import type { FormInstance, FormRules } from 'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
{
useProjectList
}
from
'@/composables/useGetProjectList'
import
{
useMapStore
}
from
'@/stores/map'
import
{
useUserStore
}
from
'@/stores/user'
import
{
addStaff
,
updateStaff
,
getStaffDetail
}
from
'../api'
const
store
=
useMapStore
()
const
userStore
=
useUserStore
()
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
emit
=
defineEmits
<
Emits
>
()
const
props
=
defineProps
({
...
...
@@ -26,16 +30,17 @@ interface Emits {
(
e
:
'create'
):
void
}
const
departmentList
:
any
=
useProjectList
(
''
,
'79806610719731712'
).
departmentList
const
sexList
=
store
.
mapList
.
filter
((
item
:
any
)
=>
item
.
key
===
'system_gender'
)[
0
].
values
const
roleList
=
store
.
mapList
.
filter
((
item
:
any
)
=>
item
.
key
===
'teacher_role'
)[
0
].
values
const
sexList
=
store
.
getMapValuesByKey
(
'system_gender'
)
const
roleList
=
store
.
getMapValuesByKey
(
'teacher_role'
)
const
statusList
=
store
.
getMapValuesByKey
(
'system_status'
)
const
form
=
reactive
({
organ_id
:
''
,
name
:
''
,
gender
:
'1'
,
mobile
:
''
,
role
:
'2'
,
email
:
''
email
:
''
,
status
:
'1'
})
const
rules
=
reactive
<
FormRules
>
({
...
...
@@ -47,7 +52,8 @@ const rules = reactive<FormRules>({
{
pattern
:
/^1
(
3|4|5|7|8
)\d{9}
$/
,
message
:
'请输入正确的手机号'
,
trigger
:
'blur'
}
],
role
:
[{
required
:
true
,
message
:
'请选择角色类型'
,
trigger
:
'change'
}],
email
:
[{
required
:
true
,
message
:
'请输入邮箱'
,
trigger
:
'blur'
}]
email
:
[{
required
:
true
,
message
:
'请输入邮箱'
,
trigger
:
'blur'
}],
status
:
[{
required
:
true
,
message
:
'请选择生效状态'
,
trigger
:
'change'
}]
})
// 取消
...
...
@@ -63,6 +69,9 @@ const handleConfirm = async (formEl: FormInstance | undefined) => {
if
(
valid
)
{
if
(
props
.
isEdit
===
'0'
)
{
const
params
:
any
=
Object
.
assign
({},
form
)
if
(
userStore
.
roles
[
0
].
name
===
'部门管理员'
)
{
params
.
organ_id
=
userStore
.
organization
?.
id
}
addStaff
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'新增教工成功'
)
emit
(
'update:isShowStaffDialog'
,
false
)
...
...
@@ -97,32 +106,49 @@ if (props.isEdit === '2' || props.isEdit === '1') {
<el-dialog
:model-value=
"isShowStaffDialog"
draggable
:title=
"props.title"
:before-close=
"handleCancel"
width=
"30%"
>
<el-form
:model=
"form"
label-position=
"right"
label-width=
"auto"
:rules=
"rules"
ref=
"ruleFormRef"
>
<el-form-item
label=
"所属部门/学校:"
prop=
"school"
>
<el-select
clearable
v-model=
"form.organ_id"
:disabled=
"props.title === '查看详情'"
style=
"width: 100%"
>
<el-select
clearable
v-model=
"form.organ_id"
:disabled=
"props.isEdit === '2'"
style=
"width: 100%"
v-if=
"userStore.roles[0].name === '超级管理员'"
>
<el-option
v-for=
"item in departmentList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
<el-input
:placeholder=
"userStore.organization.name"
v-model=
"form.organ_id"
v-else-if=
"userStore.roles[0].name === '部门管理员'"
disabled
></el-input>
</el-form-item>
<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.
isEdit === '2
'"
></el-input>
</el-form-item>
<el-form-item
label=
"性别:"
prop=
"gender"
>
<el-radio-group
v-model=
"form.gender"
:disabled=
"props.
title === '查看详情
'"
>
<el-radio-group
v-model=
"form.gender"
:disabled=
"props.
isEdit === '2
'"
>
<el-radio
v-for=
"(item, index) in sexList"
:key=
"index"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<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.
isEdit === '2
'"
></el-input>
</el-form-item>
<el-form-item
label=
"角色类型:"
prop=
"role"
>
<el-radio-group
v-model=
"form.role"
:disabled=
"props.
title === '查看详情
'"
>
<el-radio-group
v-model=
"form.role"
:disabled=
"props.
isEdit === '2
'"
>
<el-radio
v-for=
"(item, index) in roleList"
:key=
"index"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"邮箱:"
prop=
"email"
>
<el-input
v-model=
"form.email"
:disabled=
"props.title === '查看详情'"
/>
<el-input
v-model=
"form.email"
:disabled=
"props.isEdit === '2'"
/>
</el-form-item>
<el-form-item
label=
"生效状态:"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
:disabled=
"props.isEdit === '2'"
>
<el-radio
v-for=
"(item, index) in statusList"
:key=
"index"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template
#
footer
>
<template
#
footer
v-if=
"props.isEdit !== '2'"
>
<span>
<el-button
@
click=
"handleCancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm(ruleFormRef)"
>
确认
</el-button>
...
...
src/modules/admin/staff/views/List.vue
浏览文件 @
d40826b4
<
script
setup
lang=
"ts"
>
import
{
getStaffList
}
from
'../api'
// import { useMapStore } from '@/stores/map'
// const store = useMapStore()
import
{
ElMessage
}
from
'element-plus'
import
AddStaff
from
'../components/AddStaff.vue'
import
{
useProjectList
}
from
'@/composables/useGetProjectList'
import
AddStaff
from
'../components/AddStaff.vue'
import
{
getStaffList
,
updateStaff
}
from
'../api'
const
departmentList
:
any
=
useProjectList
(
''
,
'79806610719731712'
).
departmentList
const
appList
=
ref
()
...
...
@@ -34,24 +34,22 @@ const listOptions = $computed(() => {
{
label
:
'性别'
,
prop
:
'gender_name'
,
align
:
'center'
},
{
label
:
'邮箱'
,
prop
:
'email'
,
align
:
'center'
},
{
label
:
'角色类型'
,
prop
:
'role_name'
,
align
:
'center'
},
{
label
:
'生效状态'
,
slots
:
'status'
,
align
:
'center'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
,
align
:
'center'
},
{
label
:
'操作'
,
slots
:
'table-operate'
,
align
:
'center'
,
fixed
:
'right'
}
]
}
})
// 刷新页面
// const handleRefresh = () => {
// appList.value.refetch()
// }
// 新增学生
const
handleAddStudent
=
()
=>
{
isShowStaffDialog
.
value
=
true
title
.
value
=
'新增教工'
isEdit
.
value
=
'0'
}
// 编辑
学生
// 编辑
教工
const
handleEdit
=
(
row
:
any
)
=>
{
id
.
value
=
row
.
id
isShowStaffDialog
.
value
=
true
title
.
value
=
'编辑教工'
studentId
.
value
=
row
.
id
...
...
@@ -68,22 +66,48 @@ const handleDetail = (row: any) => {
const
handleFresh
=
()
=>
{
appList
.
value
.
refetch
()
}
const
handleChangeStatus
=
(
row
:
any
)
=>
{
if
(
row
.
id
!==
undefined
)
{
const
params
:
any
=
Object
.
assign
({},
row
)
updateStaff
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'更新教工成功'
)
handleFresh
()
})
}
}
</
script
>
<
template
>
<AppCard
title=
"教工用户管理"
>
<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"
v-permission=
"'v1-learning-teacher-create'"
>
新增教工
</el-button
>
<template
#
filter-department=
"
{ params }">
<div
class=
"name"
style=
"font-size: 14px; color: #606266; padding-right: 12px"
>
所属部门/学校:
</div>
<el-select
@
change=
"handleFresh"
clearable
v-model=
"params.
authorize
d"
>
<el-select
@
change=
"handleFresh"
clearable
v-model=
"params.
organ_i
d"
>
<el-option
v-for=
"item in departmentList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</
template
>
<
template
#
status=
"{ row }"
>
<el-switch
size=
"large"
v-model=
"row.status"
active-value=
"1"
inactive-value=
"0"
inline-prompt
style=
"--el-switch-on-color: #aa1941"
@
change=
"handleChangeStatus(row)"
></el-switch>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
>
查看
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
>
编辑
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
v-permission=
"'v1-learning-teacher-view'"
>
查看
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
v-permission=
"'v1-learning-teacher-update'"
>
编辑
</el-link
>
</el-space>
</
template
>
</AppList>
...
...
src/modules/admin/student/api.ts
浏览文件 @
d40826b4
...
...
@@ -14,7 +14,7 @@ export function importStudent(data: { file: any }) {
export
function
exportStudent
(
params
:
{
name
:
string
;
organ_id
:
string
})
{
return
httpRequest
.
get
(
'/api/resource/v1/learning/student/download'
,
{
params
,
responseType
:
'blob'
})
}
// 导出学生
// 添加学生
export
function
addStudent
(
data
?:
{
name
:
string
...
...
src/modules/admin/student/components/AddStudent.vue
浏览文件 @
d40826b4
...
...
@@ -78,7 +78,7 @@ const handleConfirm = async (formEl: FormInstance | undefined) => {
}
else
if
(
props
.
isEdit
===
'1'
)
{
const
params
:
any
=
Object
.
assign
({
id
:
props
.
id
},
form
)
updateStudent
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'更新
教工
成功'
)
ElMessage
.
success
(
'更新
学生
成功'
)
emit
(
'update:isShowAddDialog'
,
false
)
emit
(
'create'
)
})
...
...
@@ -214,7 +214,7 @@ const handleChangeSpe = (val: any) => {
<el-option
v-for=
"item in classList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"状态:"
prop=
"status"
>
<el-form-item
label=
"
生效
状态:"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
:disabled=
"props.isEdit === '2'"
>
<el-radio
v-for=
"(item, id) in statusList"
:key=
"id"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
...
...
src/modules/admin/student/views/List.vue
浏览文件 @
d40826b4
<
script
setup
lang=
"ts"
>
import
{
ElMessage
}
from
'element-plus'
import
{
useProjectList
}
from
'@/composables/useGetProjectList'
import
AddStudent
from
'../components/AddStudent.vue'
import
ImportStudent
from
'../components/ImportStudent.vue'
import
{
getStudentList
,
exportStudent
}
from
'../api'
import
{
getStudentList
,
exportStudent
,
updateStudent
}
from
'../api'
const
departmentList
:
any
=
useProjectList
(
''
,
'79806610719731712'
).
departmentList
const
appList
=
ref
()
const
id
=
ref
(
''
)
...
...
@@ -31,7 +32,7 @@ const listOptions = {
{
label
:
'专业'
,
prop
:
'specialty_id_name'
,
align
:
'center'
},
{
label
:
'班级'
,
prop
:
'class_id_name'
,
align
:
'center'
},
{
label
:
'身份证号'
,
prop
:
'id_number'
,
align
:
'center'
},
{
label
:
'
有效状态'
,
prop
:
'status_name
'
,
align
:
'center'
},
{
label
:
'
生效状态'
,
slots
:
'status
'
,
align
:
'center'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
,
align
:
'center'
},
{
label
:
'操作'
,
slots
:
'table-operate'
,
align
:
'center'
,
minWidth
:
'200'
,
fixed
:
'right'
}
]
...
...
@@ -61,6 +62,15 @@ const handleDetail = (row: any) => {
id
.
value
=
row
.
id
isEdit
.
value
=
'2'
}
const
handleChangeStatus
=
(
row
:
any
)
=>
{
if
(
row
.
id
!==
undefined
)
{
const
params
:
any
=
Object
.
assign
({},
row
)
updateStudent
(
params
).
then
(()
=>
{
ElMessage
.
success
(
'更新学生成功'
)
handleRefresh
()
})
}
}
// 批量导入
const
handleImport
=
()
=>
{
isShowImportDialog
.
value
=
true
...
...
@@ -98,19 +108,41 @@ const handleSelectionChange = (val: any) => {
stripe
style=
"margin-top: 30px"
>
<el-button
type=
"primary"
round
@
click=
"handleAddStudent"
>
新增学生
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleImport"
>
批量导入
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleExport"
>
导出
</el-button>
<el-button
type=
"primary"
round
@
click=
"handleAddStudent"
v-permission=
"'v1-learning-student-create'"
>
新增学生
</el-button
>
<el-button
type=
"primary"
round
@
click=
"handleImport"
v-permission=
"'v1-learning-student-import'"
>
批量导入
</el-button
>
<el-button
type=
"primary"
round
@
click=
"handleExport"
v-permission=
"'v1-learning-student-download'"
>
导出
</el-button
>
<el-button
type=
"primary"
round
>
生源地分析
</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
#
status=
"{ row }"
>
<el-switch
size=
"large"
v-model=
"row.status"
active-value=
"1"
inactive-value=
"0"
inline-prompt
style=
"--el-switch-on-color: #aa1941"
@
change=
"handleChangeStatus(row)"
></el-switch>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
>
查看
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
>
编辑
</el-link>
<el-link
type=
"primary"
plain
@
click=
"handleDetail(row)"
v-permission=
"'v1-learning-student-view'"
>
查看
</el-link
>
<el-link
type=
"primary"
plain
@
click=
"handleEdit(row)"
v-permission=
"'v1-learning-student-update'"
>
编辑
</el-link
>
</el-space>
</
template
>
</AppList>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论