Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-zws
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-zws
Commits
eb610b6b
提交
eb610b6b
authored
11月 17, 2022
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
7f122024
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
80 行增加
和
10 行删除
+80
-10
api.ts
src/modules/base/project/api.ts
+5
-0
InfoBase.vue
src/modules/base/project/components/InfoBase.vue
+13
-10
InfoUsers.vue
src/modules/base/project/components/InfoUsers.vue
+2
-0
useMap.ts
src/modules/base/project/composables/useMap.ts
+60
-0
没有找到文件。
src/modules/base/project/api.ts
浏览文件 @
eb610b6b
...
...
@@ -34,3 +34,8 @@ export function getProjectUserList(params?: { id?: string | string[] }) {
export
function
updateProject
(
data
?:
{
id
:
string
|
string
[];
title
?:
string
;
alias
?:
string
;
project_type
:
string
;
project_status
:
string
;
project_uri
?:
string
;
landing_page_uri
?:
string
;
})
{
return
httpRequest
.
post
(
'/api/zws/v1/backend/project/update'
,
data
)
}
// 获取项目相关的公共map
export
function
getProjectMap
()
{
return
httpRequest
.
get
(
'/api/zws/v1/backend/project/conditions'
)
}
src/modules/base/project/components/InfoBase.vue
浏览文件 @
eb610b6b
<
script
setup
lang=
"ts"
>
import
{
useGetProjectMap
}
from
'@/composables/useGetProjectMap'
import
type
{
FormRules
}
from
'element-plus'
import
{
getProjectDetail
}
from
'../api'
import
{
useMap
}
from
'../composables/useMap'
const
route
=
useRoute
()
const
{
projectTypeMap
,
projectStatusMap
}
=
useGetProjectMap
()
const
{
types
,
status
,
projectId
,
checkAuth
,
prefix
}
=
useMap
()
prefix
.
value
=
'U:zws_config_projects:'
const
ruleFormRef
=
ref
()
...
...
@@ -39,6 +41,7 @@ onMounted(() => {
if
(
prop
.
status
?.
isView
||
prop
.
status
?.
isUpdate
)
{
getProjectDetail
({
id
:
route
.
params
.
id
}).
then
((
res
:
{
data
:
ProjectInfoBase
})
=>
{
form
=
Object
.
assign
(
form
,
res
.
data
)
projectId
.
value
=
res
.
data
.
project_id
})
}
})
...
...
@@ -62,26 +65,26 @@ defineExpose({
<el-card
shadow=
"never"
header=
"基本信息"
>
<el-form
ref=
"ruleFormRef"
:disabled=
"status?.isView"
:model=
"form"
:rules=
"rules"
label-width=
"140px"
>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"form.title"
/>
<el-input
v-model=
"form.title"
:disabled=
"!checkAuth('title')"
/>
</el-form-item>
<el-form-item
label=
"项目别名"
>
<el-input
v-model=
"form.alias"
/>
<el-input
v-model=
"form.alias"
:disabled=
"!checkAuth('alias')"
/>
</el-form-item>
<el-form-item
label=
"项目类型"
prop=
"project_type"
>
<el-select
v-model=
"form.project_type"
placeholder=
"请选择"
>
<el-option
v-for=
"item in
projectTypeMap
"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
<el-select
v-model=
"form.project_type"
placeholder=
"请选择"
:disabled=
"!checkAuth('project_type')"
>
<el-option
v-for=
"item in
types
"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"project_status"
>
<el-select
v-model=
"form.project_status"
placeholder=
"请选择"
>
<el-option
v-for=
"item in
projectStatusMap
"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
<el-select
v-model=
"form.project_status"
placeholder=
"请选择"
:disabled=
"!checkAuth('project_status')"
>
<el-option
v-for=
"item in
status
"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目站首页(原项目页)"
>
<el-input
v-model=
"form.project_uri"
/>
<el-input
v-model=
"form.project_uri"
:disabled=
"!checkAuth('project_uri')"
/>
</el-form-item>
<el-form-item
label=
"移动端落地页(原着陆页地址)"
>
<el-input
v-model=
"form.landing_page_uri"
/>
<el-input
v-model=
"form.landing_page_uri"
:disabled=
"!checkAuth('landing_page_uri')"
/>
</el-form-item>
</el-form>
</el-card>
...
...
src/modules/base/project/components/InfoUsers.vue
浏览文件 @
eb610b6b
<
script
setup
lang=
"ts"
>
import
AppList
from
'@/components/base/AppList.vue'
import
{
getProjectUserList
}
from
'../api'
import
{
useMap
}
from
'../composables/useMap'
const
{
hasAuth
}
=
useMap
()
const
AddMember
=
defineAsyncComponent
(()
=>
import
(
'../components/AddMember.vue'
))
const
route
=
useRoute
()
...
...
src/modules/base/project/composables/useMap.ts
0 → 100644
浏览文件 @
eb610b6b
import
{
getProjectMap
}
from
'../api'
interface
State
{
id
:
string
name
:
string
}
interface
Project
{
project_id
:
string
roles
:
string
[]
permissions
:
string
[]
tags
:
Record
<
string
,
string
>
}
const
types
=
ref
<
State
[]
>
([])
const
status
=
ref
<
State
[]
>
([])
const
authProjectList
=
ref
<
Project
[]
>
([])
const
tags
=
ref
<
Record
<
string
,
string
>>
({})
export
function
useMap
()
{
const
projectId
=
ref
(
''
)
const
prefix
=
ref
(
''
)
function
fetchInfo
()
{
getProjectMap
().
then
((
res
:
any
)
=>
{
const
data
=
res
.
data
types
.
value
=
data
.
project_type_map
?.
map
((
item
:
{
id
:
number
;
name
:
string
})
=>
({
...
item
,
id
:
item
.
id
.
toString
()
}))
||
[]
status
.
value
=
data
.
project_status_map
?.
map
((
item
:
{
id
:
number
;
name
:
string
})
=>
({
...
item
,
id
:
item
.
id
.
toString
()
}))
||
[]
authProjectList
.
value
=
data
.
project_auth_map
||
[]
tags
.
value
=
data
.
tags
||
{}
})
}
if
(
!
authProjectList
.
value
.
length
)
fetchInfo
()
// 当前项目
const
project
=
computed
(()
=>
{
return
authProjectList
.
value
.
find
(
item
=>
item
.
project_id
===
projectId
.
value
)
})
// 是否需要权限控制
function
isAuth
(
key
:
string
,
pre
:
string
=
prefix
.
value
)
{
const
prop
=
pre
+
key
return
Object
.
prototype
.
hasOwnProperty
.
call
(
tags
.
value
,
prop
)
}
// 有没有权限
function
hasAuth
(
key
:
string
,
pid
:
string
=
projectId
.
value
,
pre
:
string
=
prefix
.
value
)
{
const
project
=
authProjectList
.
value
.
find
(
item
=>
item
.
project_id
===
pid
)
// 暂时先返回true; 有项目ID的必须定义项目ID,要不等于没做权限处理
if
(
!
project
)
return
true
const
prop
=
pre
+
key
return
Object
.
prototype
.
hasOwnProperty
.
call
(
project
.
tags
,
prop
)
}
// 权限校验
function
checkAuth
(
key
:
string
,
pid
:
string
=
projectId
.
value
,
pre
:
string
=
prefix
.
value
)
{
return
isAuth
(
key
,
pre
)
?
hasAuth
(
key
,
pid
,
pre
)
:
true
}
return
{
types
,
status
,
authProjectList
,
tags
,
project
,
projectId
,
prefix
,
isAuth
,
hasAuth
,
checkAuth
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论