Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-project
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-project
Commits
021d0987
提交
021d0987
authored
10月 14, 2021
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 机构管理
上级
cb1d1aba
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
118 行增加
和
43 行删除
+118
-43
AppList.vue
src/components/base/AppList.vue
+8
-2
List.vue
src/modules/roles/views/List.vue
+4
-4
api.js
src/modules/school/api.js
+8
-1
Editform.vue
src/modules/school/components/Editform.vue
+19
-9
Detail.vue
src/modules/school/views/Detail.vue
+18
-7
List.vue
src/modules/school/views/List.vue
+61
-20
没有找到文件。
src/components/base/AppList.vue
浏览文件 @
021d0987
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<div
class=
"table-list-hd"
>
<div
class=
"table-list-hd"
>
<!-- 筛选 -->
<!-- 筛选 -->
<div
class=
"table-list-filter"
v-if=
"filters.length"
>
<div
class=
"table-list-filter"
v-if=
"filters.length"
>
<el-form
:inline=
"true"
:model=
"params"
ref=
"filterForm"
>
<el-form
:inline=
"true"
:model=
"params"
ref=
"filterForm"
@
submit
.
native
.
prevent
>
<template
v-for=
"item in filters"
>
<template
v-for=
"item in filters"
>
<el-form-item
:label=
"item.label"
:prop=
"item.prop"
:key=
"item.prop"
>
<el-form-item
:label=
"item.label"
:prop=
"item.prop"
:key=
"item.prop"
>
<template
v-if=
"item.slots"
>
<template
v-if=
"item.slots"
>
...
@@ -11,7 +11,13 @@
...
@@ -11,7 +11,13 @@
</
template
>
</
template
>
<
template
v-else
>
<
template
v-else
>
<!-- input -->
<!-- input -->
<el-input
v-model=
"params[item.prop]"
v-bind=
"item"
clearable
v-if=
"item.type === 'input'"
/>
<el-input
v-model=
"params[item.prop]"
v-bind=
"item"
clearable
v-if=
"item.type === 'input'"
@
keyup
.
native
.
enter=
"search"
/>
<!-- select -->
<!-- select -->
<el-select
<el-select
v-model=
"params[item.prop]"
v-model=
"params[item.prop]"
...
...
src/modules/roles/views/List.vue
浏览文件 @
021d0987
...
@@ -5,9 +5,9 @@
...
@@ -5,9 +5,9 @@
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleCreate"
>
添加角色
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleCreate"
>
添加角色
</el-button>
</
template
>
</
template
>
<
template
v-slot:table-x=
"{ row }"
>
<
template
v-slot:table-x=
"{ row }"
>
<el-button
type=
"
text
"
@
click=
"handleUpdate(row)"
>
修改
</el-button>
<el-button
type=
"
primary
"
@
click=
"handleUpdate(row)"
>
修改
</el-button>
<el-button
type=
"
text
"
@
click=
"onRemove(row)"
>
删除
</el-button>
<el-button
type=
"
danger
"
@
click=
"onRemove(row)"
>
删除
</el-button>
<el-button
type=
"
text
"
@
click=
"handlePermission(row)"
>
权限配置
</el-button>
<el-button
type=
"
info
"
@
click=
"handlePermission(row)"
>
权限配置
</el-button>
</
template
>
</
template
>
</app-list>
</app-list>
<!-- 创建/编辑 -->
<!-- 创建/编辑 -->
...
@@ -52,7 +52,7 @@ export default {
...
@@ -52,7 +52,7 @@ export default {
{
label
:
'角色名称'
,
prop
:
'name'
},
{
label
:
'角色名称'
,
prop
:
'name'
},
{
label
:
'角色描述'
,
prop
:
'desc'
},
{
label
:
'角色描述'
,
prop
:
'desc'
},
{
label
:
'创建时间'
,
prop
:
'created_at'
},
{
label
:
'创建时间'
,
prop
:
'created_at'
},
{
label
:
'操作'
,
slots
:
'table-x'
,
align
:
'right'
,
width
:
2
0
0
,
fixed
:
'right'
}
{
label
:
'操作'
,
slots
:
'table-x'
,
align
:
'right'
,
width
:
2
4
0
,
fixed
:
'right'
}
]
]
}
}
}
}
...
...
src/modules/school/api.js
浏览文件 @
021d0987
...
@@ -4,7 +4,7 @@ import httpRequest from '@/utils/axios'
...
@@ -4,7 +4,7 @@ import httpRequest from '@/utils/axios'
* 获取机构列表
* 获取机构列表
*/
*/
export
function
getOrgList
(
params
)
{
export
function
getOrgList
(
params
)
{
return
httpRequest
.
get
(
'/api/xedu/admin/v1/organization'
,
{
params
})
return
httpRequest
.
get
(
'/api/xedu/admin/v1/organization
s
'
,
{
params
})
}
}
/**
/**
...
@@ -34,3 +34,10 @@ export function updateOrg(data) {
...
@@ -34,3 +34,10 @@ export function updateOrg(data) {
export
function
deleteOrg
(
data
)
{
export
function
deleteOrg
(
data
)
{
return
httpRequest
.
delete
(
`/api/xedu/admin/v1/organization/
${
data
.
id
}
`
,
data
)
return
httpRequest
.
delete
(
`/api/xedu/admin/v1/organization/
${
data
.
id
}
`
,
data
)
}
}
/**
* 获取角色列表
*/
export
function
getRoleList
(
params
)
{
return
httpRequest
.
get
(
'/api/xedu/admin/v1/roles'
,
{
params
})
}
src/modules/school/components/Editform.vue
浏览文件 @
021d0987
<
template
>
<
template
>
<el-dialog
:title=
"title"
:close-on-click-modal=
"false"
v-bind=
"$attrs"
v-on=
"$listeners"
width=
"500px"
>
<el-dialog
:title=
"title"
:close-on-click-modal=
"false"
v-bind=
"$attrs"
v-on=
"$listeners"
width=
"500px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-position=
"top"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-position=
"top"
>
<el-form-item
label=
"登录手机号"
prop=
"
account
"
>
<el-form-item
label=
"登录手机号"
prop=
"
login_mobile
"
>
<el-input
v-model=
"form.
account
"
clearable
placeholder=
"请输入登录手机号"
/>
<el-input
v-model=
"form.
login_mobile
"
clearable
placeholder=
"请输入登录手机号"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"机构名称"
prop=
"name"
>
<el-form-item
label=
"机构名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
clearable
placeholder=
"请输入机构名称"
/>
<el-input
v-model=
"form.name"
clearable
placeholder=
"请输入机构名称"
/>
...
@@ -20,13 +20,14 @@
...
@@ -20,13 +20,14 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"机构角色"
prop=
"role_id"
>
<el-form-item
label=
"机构角色"
prop=
"role_id"
>
<el-select
v-model=
"form.role_id"
clearable
placeholder=
"请选择机构角色"
style=
"width: 100%"
>
<el-select
v-model=
"form.role_id"
clearable
placeholder=
"请选择机构角色"
style=
"width: 100%"
>
<el-option
v-for=
"item in
contentPermission"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value
"
/>
<el-option
v-for=
"item in
roleList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id
"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"有效期"
prop=
"validity_date"
>
<el-form-item
label=
"有效期"
prop=
"validity_date"
>
<el-date-picker
<el-date-picker
v-model=
"form.validity_date"
v-model=
"form.validity_date"
type=
"date"
type=
"date"
value-format=
"yyyy-MM-dd"
:picker-options=
"pickerOptions"
:picker-options=
"pickerOptions"
placeholder=
"请选择该机构有效期"
placeholder=
"请选择该机构有效期"
/>
/>
...
@@ -40,7 +41,7 @@
...
@@ -40,7 +41,7 @@
</template>
</template>
<
script
>
<
script
>
import
{
createOrg
,
updateOrg
}
from
'../api.js'
import
{
createOrg
,
updateOrg
,
getRoleList
}
from
'../api.js'
export
default
{
export
default
{
props
:
{
props
:
{
isEdit
:
{
type
:
Boolean
,
default
:
false
},
isEdit
:
{
type
:
Boolean
,
default
:
false
},
...
@@ -49,7 +50,7 @@ export default {
...
@@ -49,7 +50,7 @@ export default {
data
()
{
data
()
{
return
{
return
{
form
:
{
form
:
{
account
:
''
,
login_mobile
:
''
,
name
:
''
,
name
:
''
,
contact_name
:
''
,
contact_name
:
''
,
contact_information
:
''
,
contact_information
:
''
,
...
@@ -58,7 +59,7 @@ export default {
...
@@ -58,7 +59,7 @@ export default {
validity_date
:
''
validity_date
:
''
},
},
rules
:
{
rules
:
{
account
:
[{
required
:
true
,
pattern
:
/^1
[
3-9
]\d{9}
$/
,
message
:
'请输入登录手机号'
,
trigger
:
'blur'
}],
login_mobile
:
[{
required
:
true
,
pattern
:
/^1
[
3-9
]\d{9}
$/
,
message
:
'请输入登录手机号'
,
trigger
:
'blur'
}],
name
:
[{
required
:
true
,
message
:
'请输入机构名称'
,
trigger
:
'blur'
}],
name
:
[{
required
:
true
,
message
:
'请输入机构名称'
,
trigger
:
'blur'
}],
contact_name
:
[{
required
:
true
,
message
:
'请输入联系人'
,
trigger
:
'blur'
}],
contact_name
:
[{
required
:
true
,
message
:
'请输入联系人'
,
trigger
:
'blur'
}],
contact_information
:
[{
required
:
true
,
message
:
'请输入联系方式'
,
trigger
:
'blur'
}],
contact_information
:
[{
required
:
true
,
message
:
'请输入联系方式'
,
trigger
:
'blur'
}],
...
@@ -66,14 +67,15 @@ export default {
...
@@ -66,14 +67,15 @@ export default {
role_id
:
[{
required
:
true
,
message
:
'请选择机构角色'
,
trigger
:
'change'
}]
role_id
:
[{
required
:
true
,
message
:
'请选择机构角色'
,
trigger
:
'change'
}]
},
},
contentPermission
:
[
contentPermission
:
[
{
label
:
'
免费内容'
,
value
:
'1'
},
{
label
:
'
付费内容'
,
value
:
1
},
{
label
:
'
付费内容'
,
value
:
'2'
}
{
label
:
'
免费内容'
,
value
:
2
}
],
],
pickerOptions
:
{
pickerOptions
:
{
disabledDate
(
time
)
{
disabledDate
(
time
)
{
return
time
.
getTime
()
<
Date
.
now
()
return
time
.
getTime
()
<
Date
.
now
()
}
}
}
},
roleList
:
[]
// 角色列表
}
}
},
},
watch
:
{
watch
:
{
...
@@ -89,7 +91,15 @@ export default {
...
@@ -89,7 +91,15 @@ export default {
return
this
.
isEdit
?
'编辑机构'
:
'添加机构'
return
this
.
isEdit
?
'编辑机构'
:
'添加机构'
}
}
},
},
beforeMount
()
{
this
.
getRoleList
()
},
methods
:
{
methods
:
{
getRoleList
()
{
getRoleList
({
limit
:
100
}).
then
(
res
=>
{
this
.
roleList
=
res
.
data
.
data
})
},
// 取消
// 取消
onCancel
()
{
onCancel
()
{
this
.
$emit
(
'update:visible'
,
false
)
this
.
$emit
(
'update:visible'
,
false
)
...
...
src/modules/school/views/Detail.vue
浏览文件 @
021d0987
<
template
>
<
template
>
<app-card
title=
"机构信息
"
>
<app-card
:title=
"detail.name
"
>
<template
#
header-aside
>
<template
#
header-aside
>
<el-button
type=
"primary"
@
click=
"visible = true"
>
编辑
</el-button>
<el-button
type=
"primary"
@
click=
"visible = true"
>
编辑
</el-button>
</
template
>
</
template
>
<el-descriptions
:
title=
"detail.name"
:column=
"1
"
>
<el-descriptions
:
column=
"1"
size=
"medium
"
>
<!-- <el-descriptions-item label="机构名称">{{ detail.name }}</el-descriptions-item> -->
<!-- <el-descriptions-item label="机构名称">{{ detail.name }}</el-descriptions-item> -->
<el-descriptions-item
label=
"联系人"
>
{{ detail.contact_name }}
</el-descriptions-item>
<el-descriptions-item
label=
"联系人"
>
{{ detail.contact_name }}
</el-descriptions-item>
<el-descriptions-item
label=
"联系方式"
>
{{ detail.contact_information }}
</el-descriptions-item>
<el-descriptions-item
label=
"联系方式"
>
{{ detail.contact_information }}
</el-descriptions-item>
<el-descriptions-item
label=
"机构内容权限"
>
<el-descriptions-item
label=
"机构内容权限"
>
<el-tag
size=
"small"
>
{{ detail.content_permissions
}}
</el-tag>
<el-tag
>
{{ contentPermissionName(detail.content_permissions)
}}
</el-tag>
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"机构角色"
>
<el-descriptions-item
label=
"机构角色"
>
<el-tag
size=
"small"
>
{{ detail.role_id }}
</el-tag>
<el-tag>
{{ detail.role_name }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item
label=
"有效期"
>
{{ detail.validity_date }}
<el-tag
v-if=
"detail.is_valid"
>
未过期
</el-tag>
<el-tag
type=
"danger"
v-else
>
已过期
</el-tag>
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"有效期"
>
{{ detail.validity_date }}
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
<!-- 编辑 -->
<!-- 编辑 -->
<editform
<editform
...
@@ -30,6 +34,9 @@
...
@@ -30,6 +34,9 @@
import
{
getOrg
}
from
'../api.js'
import
{
getOrg
}
from
'../api.js'
export
default
{
export
default
{
components
:
{
Editform
:
()
=>
import
(
'../components/Editform.vue'
)
},
data
()
{
data
()
{
return
{
return
{
visible
:
false
,
visible
:
false
,
...
@@ -38,7 +45,7 @@ export default {
...
@@ -38,7 +45,7 @@ export default {
},
},
computed
:
{
computed
:
{
id
()
{
id
()
{
return
this
.
$route
.
params
.
id
return
this
.
$route
.
query
.
id
}
}
},
},
beforeMount
()
{
beforeMount
()
{
...
@@ -46,13 +53,17 @@ export default {
...
@@ -46,13 +53,17 @@ export default {
},
},
methods
:
{
methods
:
{
getDetail
()
{
getDetail
()
{
getOrg
(
this
.
id
).
then
(
res
=>
{
getOrg
(
{
id
:
this
.
id
}
).
then
(
res
=>
{
this
.
detail
=
res
.
data
this
.
detail
=
res
.
data
})
})
},
},
// 更新成功
// 更新成功
handleUpdateSuccess
(
data
)
{
handleUpdateSuccess
(
data
)
{
this
.
getDetail
()
this
.
getDetail
()
},
contentPermissionName
(
value
)
{
const
map
=
{
1
:
'付费内容'
,
2
:
'免费内容'
}
return
map
[
value
]
||
value
}
}
}
}
}
}
...
...
src/modules/school/views/List.vue
浏览文件 @
021d0987
...
@@ -4,12 +4,19 @@
...
@@ -4,12 +4,19 @@
<template
#
header-aside
>
<template
#
header-aside
>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleCreate"
>
添加机构
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-plus"
@
click=
"handleCreate"
>
添加机构
</el-button>
</
template
>
</
template
>
<
template
v-slot:table-role=
"{ row }"
>
<el-tag>
{{
row
.
role_name
}}
</el-tag>
</
template
>
<
template
v-slot:table-status=
"{ row }"
>
<el-tag
v-if=
"row.is_valid"
>
未过期
</el-tag>
<el-tag
type=
"danger"
v-else
>
已过期
</el-tag>
</
template
>
<
template
v-slot:table-x=
"{ row }"
>
<
template
v-slot:table-x=
"{ row }"
>
<router-link
:to=
"
{ path: '
class/view', query: { id: row.id } }" target="_blank
">
<router-link
:to=
"
{ path: '
school/view', query: { id: row.id } }" target="_blank" style="margin-right: 10px
">
<el-button
type=
"text"
>
查看
</el-button>
<el-button>
查看
</el-button>
</router-link>
</router-link>
<el-button
type=
"
text
"
@
click=
"handleUpdate(row)"
>
编辑
</el-button>
<el-button
type=
"
primary
"
@
click=
"handleUpdate(row)"
>
编辑
</el-button>
<el-button
type=
"
text
"
@
click=
"onRemove(row)"
>
删除
</el-button>
<el-button
type=
"
danger
"
@
click=
"onRemove(row)"
>
删除
</el-button>
</
template
>
</
template
>
</app-list>
</app-list>
<!-- 创建/编辑 -->
<!-- 创建/编辑 -->
...
@@ -25,7 +32,7 @@
...
@@ -25,7 +32,7 @@
<
script
>
<
script
>
// 接口
// 接口
import
{
getOrgList
,
deleteOrg
}
from
'../api'
import
{
getOrgList
,
deleteOrg
,
getRoleList
}
from
'../api'
export
default
{
export
default
{
components
:
{
components
:
{
...
@@ -35,7 +42,8 @@ export default {
...
@@ -35,7 +42,8 @@ export default {
return
{
return
{
visible
:
false
,
visible
:
false
,
isEdit
:
false
,
// 是否是编辑状态
isEdit
:
false
,
// 是否是编辑状态
editRaw
:
{}
// 编辑的数据
editRaw
:
{},
// 编辑的数据
roleList
:
[]
// 角色列表
}
}
},
},
computed
:
{
computed
:
{
...
@@ -44,9 +52,14 @@ export default {
...
@@ -44,9 +52,14 @@ export default {
return
{
return
{
remote
:
{
remote
:
{
httpRequest
:
getOrgList
,
httpRequest
:
getOrgList
,
params
:
{}
params
:
{
id
:
''
,
name
:
''
,
content_permissions
:
''
,
role_id
:
''
}
},
},
filters
:
[
filters
:
[
{
type
:
'input'
,
prop
:
'id'
,
placeholder
:
'机构ID'
},
{
{
type
:
'input'
,
type
:
'input'
,
prop
:
'name'
,
prop
:
'name'
,
...
@@ -54,34 +67,62 @@ export default {
...
@@ -54,34 +67,62 @@ export default {
},
},
{
{
type
:
'select'
,
type
:
'select'
,
prop
:
'
permission
'
,
prop
:
'
content_permissions
'
,
placeholder
:
'机构内容权限'
,
placeholder
:
'机构内容权限'
,
options
:
[
options
:
[
{
label
:
'
免费内容'
,
value
:
'1'
},
{
label
:
'
付费内容'
,
value
:
1
},
{
label
:
'
付费内容'
,
value
:
'2'
}
{
label
:
'
免费内容'
,
value
:
2
}
]
]
},
},
{
{
type
:
'select'
,
type
:
'select'
,
prop
:
'role'
,
prop
:
'role_id'
,
placeholder
:
'机构角色'
placeholder
:
'机构角色'
,
options
:
this
.
roleList
,
labelKey
:
'name'
,
valueKey
:
'id'
}
}
],
],
columns
:
[
columns
:
[
{
label
:
'机构ID'
,
prop
:
'id'
},
{
label
:
'机构ID'
,
prop
:
'id'
},
{
label
:
'机构名称'
,
prop
:
'name'
},
{
label
:
'机构名称'
,
prop
:
'name'
},
{
label
:
'机构内容权限'
,
prop
:
'permission'
},
{
{
label
:
'机构角色'
,
prop
:
'role'
},
label
:
'机构内容权限'
,
{
label
:
'创建人'
,
prop
:
'create'
},
prop
:
'content_permissions'
,
{
label
:
'机构内用户数'
,
prop
:
'count'
},
computed
({
row
})
{
{
label
:
'创建时间'
,
prop
:
'date'
},
const
map
=
{
1
:
'付费内容'
,
2
:
'免费内容'
}
{
label
:
'状态'
,
prop
:
'status'
},
return
map
[
row
.
content_permissions
]
||
row
.
content_permissions
{
label
:
'操作'
,
slots
:
'table-x'
,
align
:
'right'
,
width
:
'120'
,
fixed
:
'right'
}
}
},
{
label
:
'机构角色'
,
prop
:
'role_name'
,
slots
:
'table-role'
},
{
label
:
'创建人'
,
prop
:
'created_by.realname'
,
computed
({
row
})
{
return
row
.
created_by
.
realname
||
row
.
created_by
.
username
}
},
{
label
:
'机构内用户数'
,
prop
:
'edu_staff_count'
},
{
label
:
'创建时间'
,
prop
:
'created_at'
},
{
label
:
'状态'
,
prop
:
'is_valid'
,
slots
:
'table-status'
},
{
label
:
'操作'
,
slots
:
'table-x'
,
align
:
'right'
,
width
:
'220'
,
fixed
:
'right'
}
]
]
}
}
}
}
},
},
beforeMount
()
{
this
.
getRoleList
()
},
methods
:
{
methods
:
{
getRoleList
()
{
getRoleList
({
limit
:
100
}).
then
(
res
=>
{
this
.
roleList
=
res
.
data
.
data
})
},
// 创建成功刷新列表
// 创建成功刷新列表
handleSuccess
()
{
handleSuccess
()
{
this
.
$refs
.
list
.
refetch
()
this
.
$refs
.
list
.
refetch
()
...
@@ -100,7 +141,7 @@ export default {
...
@@ -100,7 +141,7 @@ export default {
},
},
// 删除
// 删除
onRemove
(
row
)
{
onRemove
(
row
)
{
this
.
$confirm
(
'
班级删除请谨慎操作,确定删除?'
,
'删除班级
'
,
{
this
.
$confirm
(
'
机构删除请谨慎操作,确定删除?'
,
'删除机构
'
,
{
confirmButtonText
:
'删除'
,
confirmButtonText
:
'删除'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论