Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
sts网站
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyang
sts网站
Commits
57104fe8
Commit
57104fe8
authored
Apr 16, 2026
by
liyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:修复若干bug
parent
9d43fca6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1001 additions
and
360 deletions
+1001
-360
index.vue
admin-ui/src/views/aboutSts/index.vue
+95
-63
resultsOverview.vue
admin-ui/src/views/achievement/resultsOverview.vue
+0
-0
index.vue
admin-ui/src/views/home/introduction/index.vue
+220
-0
index.vue
admin-ui/src/views/home/news/index.vue
+0
-0
index.vue
admin-ui/src/views/home/overview/index.vue
+239
-0
index.vue
admin-ui/src/views/home/sciencePlan/index.vue
+95
-63
index.vue
admin-ui/src/views/home/value/index.vue
+53
-17
index.vue
admin-ui/src/views/progress/projectProgress/index.vue
+10
-5
index.vue
admin-ui/src/views/project/intro/index.vue
+39
-11
index.js
portal-ui/src/router/index.js
+6
-0
Achievement.vue
portal-ui/src/views/portal/Achievement.vue
+123
-79
application.yml
ruoyi-admin/src/main/resources/application.yml
+1
-1
XssHttpServletRequestWrapper.java
...com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
+117
-116
SysMenuServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+1
-1
SysAchievementMapper.xml
...src/main/resources/mapper/system/SysAchievementMapper.xml
+2
-4
No files found.
admin-ui/src/views/aboutSts/index.vue
View file @
57104fe8
...
@@ -10,20 +10,35 @@
...
@@ -10,20 +10,35 @@
size=
"mini"
size=
"mini"
@
click=
"handleAdd"
@
click=
"handleAdd"
v-hasPermi=
"['aboutSts:edit']"
v-hasPermi=
"['aboutSts:edit']"
>
新增
</el-button>
>
新增
</el-button
>
</el-col>
</el-col>
</el-row>
</el-row>
<el-table
v-loading=
"loading"
:data=
"list"
border
>
<el-table
v-loading=
"loading"
:data=
"list"
border
>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"排序"
align=
"center"
prop=
"sortOrder"
width=
"80"
/>
<el-table-column
<el-table-column
label=
"标题"
align=
"center"
prop=
"title"
show-overflow-tooltip
/>
label=
"标题"
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
align=
"center"
prop=
"title"
show-overflow-tooltip
/>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
width=
"180"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
<el-button
size=
"mini"
size=
"mini"
...
@@ -31,14 +46,16 @@
...
@@ -31,14 +46,16 @@
icon=
"el-icon-edit"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['aboutSts:edit']"
v-hasPermi=
"['aboutSts:edit']"
>
修改
</el-button>
>
修改
</el-button
>
<el-button
<el-button
size=
"mini"
size=
"mini"
type=
"text"
type=
"text"
icon=
"el-icon-delete"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['aboutSts:edit']"
v-hasPermi=
"['aboutSts:edit']"
>
删除
</el-button>
>
删除
</el-button
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -47,7 +64,12 @@
...
@@ -47,7 +64,12 @@
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"800px"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"800px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"排序"
prop=
"sortOrder"
>
<el-form-item
label=
"排序"
prop=
"sortOrder"
>
<el-input-number
v-model=
"form.sortOrder"
:min=
"0"
controls-position=
"right"
style=
"width: 100%"
/>
<el-input-number
v-model=
"form.sortOrder"
:min=
"0"
controls-position=
"right"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-input
v-model=
"form.title"
placeholder=
"请输入标题"
/>
<el-input
v-model=
"form.title"
placeholder=
"请输入标题"
/>
...
@@ -65,13 +87,19 @@
...
@@ -65,13 +87,19 @@
</template>
</template>
<
script
>
<
script
>
import
{
listAboutSts
,
getAboutSts
,
addAboutSts
,
updateAboutSts
,
delAboutSts
}
from
"@/api/aboutSts"
import
{
import
Editor
from
"@/components/Editor"
listAboutSts
,
getAboutSts
,
addAboutSts
,
updateAboutSts
,
delAboutSts
,
}
from
"@/api/aboutSts"
;
import
Editor
from
"@/components/Editor"
;
export
default
{
export
default
{
name
:
"AboutSts"
,
name
:
"AboutSts"
,
components
:
{
components
:
{
Editor
Editor
,
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -81,86 +109,90 @@ export default {
...
@@ -81,86 +109,90 @@ export default {
open
:
false
,
open
:
false
,
form
:
{
form
:
{
id
:
undefined
,
id
:
undefined
,
title
:
''
,
title
:
""
,
content
:
''
,
content
:
""
,
sortOrder
:
0
sortOrder
:
0
,
},
},
rules
:
{
rules
:
{
title
:
[
title
:
[{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}],
{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}
},
]
};
}
}
},
},
created
()
{
created
()
{
this
.
getList
()
this
.
getList
()
;
},
},
methods
:
{
methods
:
{
getList
()
{
getList
()
{
this
.
loading
=
true
this
.
loading
=
true
;
listAboutSts
().
then
(
response
=>
{
listAboutSts
()
this
.
list
=
response
.
data
||
[]
.
then
((
response
)
=>
{
this
.
loading
=
false
this
.
list
=
response
.
data
||
[];
}).
catch
(()
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
})
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
},
},
cancel
()
{
cancel
()
{
this
.
open
=
false
this
.
open
=
false
;
this
.
resetForm
()
this
.
resetForm
()
;
},
},
handleAdd
()
{
handleAdd
()
{
this
.
resetForm
()
this
.
resetForm
()
;
this
.
open
=
true
this
.
open
=
true
;
this
.
title
=
"添加关于STS"
this
.
title
=
"添加关于STS"
;
},
},
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
this
.
resetForm
()
this
.
resetForm
()
;
const
id
=
row
.
id
||
this
.
ids
const
id
=
row
.
id
||
this
.
ids
;
getAboutSts
(
id
).
then
(
response
=>
{
getAboutSts
(
id
).
then
(
(
response
)
=>
{
this
.
form
=
response
.
data
this
.
form
=
response
.
data
;
this
.
open
=
true
this
.
open
=
true
;
this
.
title
=
"修改关于STS"
this
.
title
=
"修改关于STS"
;
})
})
;
},
},
handleDelete
(
row
)
{
handleDelete
(
row
)
{
this
.
$modal
.
confirm
(
'是否确认删除标题为"'
+
row
.
title
+
'"的数据项?'
).
then
(()
=>
{
this
.
$modal
return
delAboutSts
(
row
.
id
)
.
confirm
(
'是否确认删除标题为"'
+
row
.
title
+
'"的数据项?'
)
}).
then
(()
=>
{
.
then
(()
=>
{
this
.
getList
()
return
delAboutSts
(
row
.
id
);
this
.
$modal
.
msgSuccess
(
"删除成功"
)
})
}).
catch
(()
=>
{})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"删除成功"
);
})
.
catch
(()
=>
{});
},
},
submitForm
()
{
submitForm
()
{
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
this
.
$refs
[
"form"
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
this
.
form
.
id
)
{
if
(
this
.
form
.
id
)
{
updateAboutSts
(
this
.
form
).
then
(()
=>
{
updateAboutSts
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"修改成功"
)
this
.
$modal
.
msgSuccess
(
"修改成功"
)
;
this
.
open
=
false
this
.
open
=
false
;
this
.
getList
()
this
.
getList
()
;
})
})
;
}
else
{
}
else
{
addAboutSts
(
this
.
form
).
then
(()
=>
{
addAboutSts
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"新增成功"
)
this
.
$modal
.
msgSuccess
(
"新增成功"
)
;
this
.
open
=
false
this
.
open
=
false
;
this
.
getList
()
this
.
getList
()
;
})
})
;
}
}
}
}
})
})
;
},
},
resetForm
()
{
resetForm
()
{
this
.
form
=
{
this
.
form
=
{
id
:
undefined
,
id
:
undefined
,
title
:
''
,
title
:
""
,
content
:
''
,
content
:
""
,
sortOrder
:
0
sortOrder
:
0
,
}
}
;
if
(
this
.
$refs
.
form
)
{
if
(
this
.
$refs
.
form
)
{
this
.
$refs
.
form
.
resetFields
()
this
.
$refs
.
form
.
resetFields
()
;
}
}
}
}
,
}
}
,
}
}
;
</
script
>
</
script
>
admin-ui/src/views/achievement/
o
verview.vue
→
admin-ui/src/views/achievement/
resultsO
verview.vue
View file @
57104fe8
File moved
admin-ui/src/views/home
page
/introduction/index.vue
→
admin-ui/src/views/home/introduction/index.vue
View file @
57104fe8
...
@@ -5,32 +5,70 @@
...
@@ -5,32 +5,70 @@
<el-card>
<el-card>
<div
slot=
"header"
class=
"clearfix"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
介绍详情
</span>
<span>
介绍详情
</span>
<el-button
type=
"primary"
size=
"mini"
@
click=
"enterEdit"
v-hasPermi=
"['homepage:introduction:edit']"
>
编辑
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"enterEdit"
v-hasPermi=
"['homepage:introduction:edit']"
>
编辑
</el-button
>
</div>
</div>
<el-descriptions
:column=
"1"
border
>
<el-form
ref=
"detailForm"
:model=
"form"
label-width=
"80px"
>
<el-descriptions-item
label=
"标题"
>
<el-row>
{{
form
.
title
||
'未设置'
}}
<el-col
:span=
"24"
>
</el-descriptions-item>
<el-form-item
label=
"标题"
>
<el-descriptions-item
label=
"简介"
>
<span
class=
"detail-value"
>
{{
form
.
title
||
"未设置"
}}
</span>
{{
form
.
summary
||
'未设置'
}}
</el-form-item>
</el-descriptions-item>
</el-col>
<el-descriptions-item
label=
"图片"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"简介"
>
<span
class=
"detail-value"
>
{{
form
.
summary
||
"未设置"
}}
</span>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"图片"
>
<div
v-if=
"form.images && form.images.length"
>
<div
v-if=
"form.images && form.images.length"
>
<img
v-for=
"(img, index) in form.images"
:key=
"index"
:src=
"img"
style=
"max-width: 200px; max-height: 150px; margin-right: 10px;"
/>
<img
v-for=
"(img, index) in form.images.split(',')"
:key=
"index"
:src=
"img"
style=
"
max-width: 200px;
max-height: 150px;
margin-right: 10px;
"
/>
</div>
</div>
<span
v-else
>
未设置
</span>
<span
v-else
class=
"detail-value"
>
未设置
</span>
</el-descriptions-item>
</el-form-item>
<el-descriptions-item
label=
"状态"
>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"状态"
>
<el-tag
:type=
"form.status === '0' ? 'success' : 'danger'"
>
<el-tag
:type=
"form.status === '0' ? 'success' : 'danger'"
>
{{
form
.
status
?
dict
.
type
.
sys_normal_disable
.
find
(
item
=>
item
.
value
===
form
.
status
).
label
:
'未知'
}}
{{
form
.
status
?
dict
.
type
.
sys_normal_disable
.
find
(
(
item
)
=>
item
.
value
===
form
.
status
).
label
:
"未知"
}}
</el-tag>
</el-tag>
</el-descriptions-item>
</el-form-item>
</el-descriptions>
</el-col>
</el-row>
</el-form>
</el-card>
</el-card>
</div>
</div>
<!-- 编辑视图 -->
<!-- 编辑视图 -->
<el-form
v-else
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
v-loading=
"loading"
>
<el-form
v-else
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
v-loading=
"loading"
>
<el-row>
<el-row>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-form-item
label=
"标题"
prop=
"title"
>
...
@@ -39,12 +77,16 @@
...
@@ -39,12 +77,16 @@
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"简介"
prop=
"summary"
>
<el-form-item
label=
"简介"
prop=
"summary"
>
<el-input
v-model=
"form.summary"
type=
"textarea"
placeholder=
"请输入简介"
/>
<el-input
v-model=
"form.summary"
type=
"textarea"
placeholder=
"请输入简介"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"图片"
prop=
"images"
>
<el-form-item
label=
"图片"
prop=
"images"
>
<image-upload
v-model=
"form.images"
:multiple=
"true"
/>
<image-upload
v-model=
"form.images"
:multiple=
"true"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
...
@@ -54,13 +96,19 @@
...
@@ -54,13 +96,19 @@
v-for=
"dict in dict.type.sys_normal_disable"
v-for=
"dict in dict.type.sys_normal_disable"
:key=
"dict.value"
:key=
"dict.value"
:label=
"dict.value"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio>
>
{{
dict
.
label
}}
</el-radio
>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submitForm"
v-hasPermi=
"['homepage:introduction:edit']"
>
保 存
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
v-hasPermi=
"['homepage:introduction:edit']"
>
保 存
</el-button
>
<el-button
@
click=
"cancelEdit"
>
取消
</el-button>
<el-button
@
click=
"cancelEdit"
>
取消
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
@@ -68,11 +116,15 @@
...
@@ -68,11 +116,15 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getIntroduction
,
addIntroduction
,
updateIntroduction
}
from
"@/api/homepage/introduction"
import
{
getIntroduction
,
addIntroduction
,
updateIntroduction
,
}
from
"@/api/homepage/introduction"
;
export
default
{
export
default
{
name
:
"Introduction"
,
name
:
"Introduction"
,
dicts
:
[
'sys_normal_disable'
],
dicts
:
[
"sys_normal_disable"
],
data
()
{
data
()
{
return
{
return
{
loading
:
true
,
loading
:
true
,
...
@@ -82,73 +134,87 @@ export default {
...
@@ -82,73 +134,87 @@ export default {
title
:
undefined
,
title
:
undefined
,
summary
:
undefined
,
summary
:
undefined
,
images
:
undefined
,
images
:
undefined
,
status
:
"0"
status
:
"0"
,
},
},
rules
:
{
rules
:
{
title
:
[
title
:
[{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}],
{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}
summary
:
[{
required
:
true
,
message
:
"简介不能为空"
,
trigger
:
"blur"
}],
],
},
summary
:
[
};
{
required
:
true
,
message
:
"简介不能为空"
,
trigger
:
"blur"
}
]
}
}
},
},
created
()
{
created
()
{
this
.
getIntroductionData
()
this
.
getIntroductionData
()
;
},
},
methods
:
{
methods
:
{
getIntroductionData
()
{
getIntroductionData
()
{
this
.
loading
=
true
this
.
loading
=
true
;
getIntroduction
().
then
(
response
=>
{
getIntroduction
()
.
then
((
response
)
=>
{
if
(
response
.
data
)
{
if
(
response
.
data
)
{
this
.
form
=
response
.
data
this
.
form
=
response
.
data
;
}
else
{
}
else
{
this
.
form
=
{
this
.
form
=
{
introId
:
undefined
,
introId
:
undefined
,
title
:
undefined
,
title
:
undefined
,
summary
:
undefined
,
summary
:
undefined
,
images
:
undefined
,
images
:
undefined
,
status
:
"0"
status
:
"0"
,
};
}
}
}
this
.
loading
=
false
;
this
.
loading
=
false
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
this
.
form
=
{
this
.
form
=
{
introId
:
undefined
,
introId
:
undefined
,
title
:
undefined
,
title
:
undefined
,
summary
:
undefined
,
summary
:
undefined
,
images
:
undefined
,
images
:
undefined
,
status
:
"0"
status
:
"0"
,
}
};
this
.
loading
=
false
this
.
loading
=
false
;
})
});
},
},
enterEdit
()
{
enterEdit
()
{
this
.
editing
=
true
this
.
editing
=
true
;
},
},
cancelEdit
()
{
cancelEdit
()
{
this
.
editing
=
false
this
.
editing
=
false
;
},
},
submitForm
:
function
()
{
submitForm
:
function
()
{
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
this
.
$refs
[
"form"
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
this
.
form
.
introId
!=
undefined
)
{
if
(
this
.
form
.
introId
!=
undefined
)
{
updateIntroduction
(
this
.
form
).
then
(()
=>
{
updateIntroduction
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"保存成功"
)
this
.
$modal
.
msgSuccess
(
"保存成功"
)
;
this
.
getIntroductionData
()
this
.
getIntroductionData
()
;
this
.
editing
=
false
this
.
editing
=
false
;
})
})
;
}
else
{
}
else
{
addIntroduction
(
this
.
form
).
then
(()
=>
{
addIntroduction
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"保存成功"
)
this
.
$modal
.
msgSuccess
(
"保存成功"
)
;
this
.
getIntroductionData
()
this
.
getIntroductionData
()
;
this
.
editing
=
false
this
.
editing
=
false
;
})
})
;
}
}
}
}
})
});
}
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-value
{
color
:
#606266
;
line-height
:
32px
;
}
.clearfix
{
width
:
100%
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
&
:
:
after
{
display
:
none
;
}
}
}
}
</
s
cript
>
</
s
tyle
>
admin-ui/src/views/home
page
/news/index.vue
→
admin-ui/src/views/home/news/index.vue
View file @
57104fe8
File moved
admin-ui/src/views/home
page
/overview/index.vue
→
admin-ui/src/views/home/overview/index.vue
View file @
57104fe8
...
@@ -5,34 +5,71 @@
...
@@ -5,34 +5,71 @@
<el-card>
<el-card>
<div
slot=
"header"
class=
"clearfix"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
概况详情
</span>
<span>
概况详情
</span>
<el-button
type=
"primary"
size=
"mini"
@
click=
"enterEdit"
v-hasPermi=
"['homepage:overview:edit']"
>
编辑
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"enterEdit"
v-hasPermi=
"['homepage:overview:edit']"
>
编辑
</el-button
>
</div>
</div>
<el-descriptions
:column=
"1"
border
>
<el-form
ref=
"detailForm"
:model=
"form"
label-width=
"80px"
>
<el-descriptions-item
label=
"标题"
>
<el-row>
{{
form
.
title
||
'未设置'
}}
<el-col
:span=
"24"
>
</el-descriptions-item>
<el-form-item
label=
"标题"
>
<el-descriptions-item
label=
"简介"
>
<span
class=
"detail-value"
>
{{
form
.
title
||
"未设置"
}}
</span>
{{
form
.
summary
||
'未设置'
}}
</el-form-item>
</el-descriptions-item>
</el-col>
<el-descriptions-item
label=
"图片"
>
<el-col
:span=
"24"
>
<img
v-if=
"form.image"
:src=
"form.image"
style=
"max-width: 300px; max-height: 200px;"
/>
<el-form-item
label=
"简介"
>
<span
v-else
>
未设置
</span>
<span
class=
"detail-value"
>
{{
form
.
summary
||
"未设置"
}}
</span>
</el-descriptions-item>
</el-form-item>
<el-descriptions-item
label=
"视频"
>
</el-col>
<a
v-if=
"form.video"
:href=
"form.video"
target=
"_blank"
>
查看视频
</a>
<el-col
:span=
"24"
>
<span
v-else
>
未设置
</span>
<el-form-item
label=
"图片"
>
</el-descriptions-item>
<img
<el-descriptions-item
label=
"状态"
>
v-if=
"form.image"
:src=
"form.image"
style=
"max-width: 300px; max-height: 200px"
/>
<span
v-else
class=
"detail-value"
>
未设置
</span>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"视频"
>
<a
v-if=
"form.video"
:href=
"form.video"
target=
"_blank"
>
查看视频
</a
>
<span
v-else
class=
"detail-value"
>
未设置
</span>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"状态"
>
<el-tag
:type=
"form.status === '0' ? 'success' : 'danger'"
>
<el-tag
:type=
"form.status === '0' ? 'success' : 'danger'"
>
{{
form
.
status
?
dict
.
type
.
sys_normal_disable
.
find
(
item
=>
item
.
value
===
form
.
status
).
label
:
'未知'
}}
{{
form
.
status
?
dict
.
type
.
sys_normal_disable
.
find
(
(
item
)
=>
item
.
value
===
form
.
status
).
label
:
"未知"
}}
</el-tag>
</el-tag>
</el-descriptions-item>
</el-form-item>
</el-descriptions>
</el-col>
</el-row>
</el-form>
</el-card>
</el-card>
</div>
</div>
<!-- 编辑视图 -->
<!-- 编辑视图 -->
<el-form
v-else
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
v-loading=
"loading"
>
<el-form
v-else
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
v-loading=
"loading"
>
<el-row>
<el-row>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-form-item
label=
"标题"
prop=
"title"
>
...
@@ -41,12 +78,16 @@
...
@@ -41,12 +78,16 @@
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"简介"
prop=
"summary"
>
<el-form-item
label=
"简介"
prop=
"summary"
>
<el-input
v-model=
"form.summary"
type=
"textarea"
placeholder=
"请输入简介"
/>
<el-input
v-model=
"form.summary"
type=
"textarea"
placeholder=
"请输入简介"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"图片"
prop=
"image"
>
<el-form-item
label=
"图片"
prop=
"image"
>
<image-upload
v-model=
"form.image"
/>
<image-upload
v-model=
"form.image"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
...
@@ -66,13 +107,19 @@
...
@@ -66,13 +107,19 @@
v-for=
"dict in dict.type.sys_normal_disable"
v-for=
"dict in dict.type.sys_normal_disable"
:key=
"dict.value"
:key=
"dict.value"
:label=
"dict.value"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio>
>
{{
dict
.
label
}}
</el-radio
>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submitForm"
v-hasPermi=
"['homepage:overview:edit']"
>
保 存
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
v-hasPermi=
"['homepage:overview:edit']"
>
保 存
</el-button
>
<el-button
@
click=
"cancelEdit"
>
取消
</el-button>
<el-button
@
click=
"cancelEdit"
>
取消
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
@@ -80,15 +127,19 @@
...
@@ -80,15 +127,19 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getOverview
,
addOverview
,
updateOverview
}
from
"@/api/homepage/overview"
import
{
import
FileUpload
from
"@/components/FileUpload"
getOverview
,
addOverview
,
updateOverview
,
}
from
"@/api/homepage/overview"
;
import
FileUpload
from
"@/components/FileUpload"
;
export
default
{
export
default
{
name
:
"Overview"
,
name
:
"Overview"
,
components
:
{
components
:
{
FileUpload
FileUpload
,
},
},
dicts
:
[
'sys_normal_disable'
],
dicts
:
[
"sys_normal_disable"
],
data
()
{
data
()
{
return
{
return
{
loading
:
true
,
loading
:
true
,
...
@@ -99,24 +150,23 @@ export default {
...
@@ -99,24 +150,23 @@ export default {
summary
:
undefined
,
summary
:
undefined
,
image
:
undefined
,
image
:
undefined
,
video
:
undefined
,
video
:
undefined
,
status
:
"0"
status
:
"0"
,
},
},
rules
:
{
rules
:
{
title
:
[
title
:
[{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}],
{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}
},
]
};
}
}
},
},
created
()
{
created
()
{
this
.
getOverviewData
()
this
.
getOverviewData
()
;
},
},
methods
:
{
methods
:
{
getOverviewData
()
{
getOverviewData
()
{
this
.
loading
=
true
this
.
loading
=
true
;
getOverview
().
then
(
response
=>
{
getOverview
()
.
then
((
response
)
=>
{
if
(
response
.
data
)
{
if
(
response
.
data
)
{
this
.
form
=
response
.
data
this
.
form
=
response
.
data
;
}
else
{
}
else
{
this
.
form
=
{
this
.
form
=
{
overviewId
:
undefined
,
overviewId
:
undefined
,
...
@@ -124,47 +174,66 @@ export default {
...
@@ -124,47 +174,66 @@ export default {
summary
:
undefined
,
summary
:
undefined
,
image
:
undefined
,
image
:
undefined
,
video
:
undefined
,
video
:
undefined
,
status
:
"0"
status
:
"0"
,
}
};
}
}
this
.
loading
=
false
this
.
loading
=
false
;
}).
catch
(()
=>
{
})
.
catch
(()
=>
{
this
.
form
=
{
this
.
form
=
{
overviewId
:
undefined
,
overviewId
:
undefined
,
title
:
undefined
,
title
:
undefined
,
summary
:
undefined
,
summary
:
undefined
,
image
:
undefined
,
image
:
undefined
,
video
:
undefined
,
video
:
undefined
,
status
:
"0"
status
:
"0"
,
}
};
this
.
loading
=
false
this
.
loading
=
false
;
})
});
},
},
enterEdit
()
{
enterEdit
()
{
this
.
editing
=
true
this
.
editing
=
true
;
},
},
cancelEdit
()
{
cancelEdit
()
{
this
.
editing
=
false
this
.
editing
=
false
;
},
},
submitForm
:
function
()
{
submitForm
:
function
()
{
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
this
.
$refs
[
"form"
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
this
.
form
.
overviewId
!=
undefined
)
{
if
(
this
.
form
.
overviewId
!=
undefined
)
{
updateOverview
(
this
.
form
).
then
(()
=>
{
updateOverview
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"保存成功"
)
this
.
$modal
.
msgSuccess
(
"保存成功"
)
;
this
.
getOverviewData
()
this
.
getOverviewData
()
;
this
.
editing
=
false
this
.
editing
=
false
;
})
})
;
}
else
{
}
else
{
addOverview
(
this
.
form
).
then
(()
=>
{
addOverview
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"保存成功"
)
this
.
$modal
.
msgSuccess
(
"保存成功"
)
;
this
.
getOverviewData
()
this
.
getOverviewData
()
;
this
.
editing
=
false
this
.
editing
=
false
;
})
})
;
}
}
}
}
})
});
}
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-value
{
color
:
#606266
;
line-height
:
32px
;
}
.clearfix
{
width
:
100%
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
&
:
:
after
{
display
:
none
;
}
}
}
}
</
s
cript
>
</
s
tyle
>
admin-ui/src/views/
system
/sciencePlan/index.vue
→
admin-ui/src/views/
home
/sciencePlan/index.vue
View file @
57104fe8
...
@@ -10,20 +10,35 @@
...
@@ -10,20 +10,35 @@
size=
"mini"
size=
"mini"
@
click=
"handleAdd"
@
click=
"handleAdd"
v-hasPermi=
"['system:sciencePlan:add']"
v-hasPermi=
"['system:sciencePlan:add']"
>
新增
</el-button>
>
新增
</el-button
>
</el-col>
</el-col>
</el-row>
</el-row>
<el-table
v-loading=
"loading"
:data=
"list"
border
>
<el-table
v-loading=
"loading"
:data=
"list"
border
>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"排序"
align=
"center"
prop=
"sortOrder"
width=
"80"
/>
<el-table-column
<el-table-column
label=
"标题"
align=
"center"
prop=
"title"
show-overflow-tooltip
/>
label=
"标题"
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
align=
"center"
prop=
"title"
show-overflow-tooltip
/>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
width=
"180"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
<el-button
size=
"mini"
size=
"mini"
...
@@ -31,14 +46,16 @@
...
@@ -31,14 +46,16 @@
icon=
"el-icon-edit"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['system:sciencePlan:edit']"
v-hasPermi=
"['system:sciencePlan:edit']"
>
修改
</el-button>
>
修改
</el-button
>
<el-button
<el-button
size=
"mini"
size=
"mini"
type=
"text"
type=
"text"
icon=
"el-icon-delete"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['system:sciencePlan:remove']"
v-hasPermi=
"['system:sciencePlan:remove']"
>
删除
</el-button>
>
删除
</el-button
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -47,7 +64,12 @@
...
@@ -47,7 +64,12 @@
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"800px"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"800px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"排序"
prop=
"sortOrder"
>
<el-form-item
label=
"排序"
prop=
"sortOrder"
>
<el-input-number
v-model=
"form.sortOrder"
:min=
"0"
controls-position=
"right"
style=
"width: 100%"
/>
<el-input-number
v-model=
"form.sortOrder"
:min=
"0"
controls-position=
"right"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-input
v-model=
"form.title"
placeholder=
"请输入标题"
/>
<el-input
v-model=
"form.title"
placeholder=
"请输入标题"
/>
...
@@ -65,13 +87,19 @@
...
@@ -65,13 +87,19 @@
</template>
</template>
<
script
>
<
script
>
import
{
listSciencePlan
,
getSciencePlan
,
addSciencePlan
,
updateSciencePlan
,
delSciencePlan
}
from
"@/api/system/sciencePlan"
import
{
import
Editor
from
"@/components/Editor"
listSciencePlan
,
getSciencePlan
,
addSciencePlan
,
updateSciencePlan
,
delSciencePlan
,
}
from
"@/api/system/sciencePlan"
;
import
Editor
from
"@/components/Editor"
;
export
default
{
export
default
{
name
:
"SciencePlan"
,
name
:
"SciencePlan"
,
components
:
{
components
:
{
Editor
Editor
,
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -81,86 +109,90 @@ export default {
...
@@ -81,86 +109,90 @@ export default {
open
:
false
,
open
:
false
,
form
:
{
form
:
{
id
:
undefined
,
id
:
undefined
,
title
:
''
,
title
:
""
,
content
:
''
,
content
:
""
,
sortOrder
:
0
sortOrder
:
0
,
},
},
rules
:
{
rules
:
{
title
:
[
title
:
[{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}],
{
required
:
true
,
message
:
"标题不能为空"
,
trigger
:
"blur"
}
},
]
};
}
}
},
},
created
()
{
created
()
{
this
.
getList
()
this
.
getList
()
;
},
},
methods
:
{
methods
:
{
getList
()
{
getList
()
{
this
.
loading
=
true
this
.
loading
=
true
;
listSciencePlan
().
then
(
response
=>
{
listSciencePlan
()
this
.
list
=
response
.
data
||
[]
.
then
((
response
)
=>
{
this
.
loading
=
false
this
.
list
=
response
.
data
||
[];
}).
catch
(()
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
})
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
},
},
cancel
()
{
cancel
()
{
this
.
open
=
false
this
.
open
=
false
;
this
.
resetForm
()
this
.
resetForm
()
;
},
},
handleAdd
()
{
handleAdd
()
{
this
.
resetForm
()
this
.
resetForm
()
;
this
.
open
=
true
this
.
open
=
true
;
this
.
title
=
"添加科研计划与国际合作"
this
.
title
=
"添加科研计划与国际合作"
;
},
},
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
this
.
resetForm
()
this
.
resetForm
()
;
const
id
=
row
.
id
||
this
.
ids
const
id
=
row
.
id
||
this
.
ids
;
getSciencePlan
(
id
).
then
(
response
=>
{
getSciencePlan
(
id
).
then
(
(
response
)
=>
{
this
.
form
=
response
.
data
this
.
form
=
response
.
data
;
this
.
open
=
true
this
.
open
=
true
;
this
.
title
=
"修改科研计划与国际合作"
this
.
title
=
"修改科研计划与国际合作"
;
})
})
;
},
},
handleDelete
(
row
)
{
handleDelete
(
row
)
{
this
.
$modal
.
confirm
(
'是否确认删除标题为"'
+
row
.
title
+
'"的数据项?'
).
then
(()
=>
{
this
.
$modal
return
delSciencePlan
(
row
.
id
)
.
confirm
(
'是否确认删除标题为"'
+
row
.
title
+
'"的数据项?'
)
}).
then
(()
=>
{
.
then
(()
=>
{
this
.
getList
()
return
delSciencePlan
(
row
.
id
);
this
.
$modal
.
msgSuccess
(
"删除成功"
)
})
}).
catch
(()
=>
{})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"删除成功"
);
})
.
catch
(()
=>
{});
},
},
submitForm
()
{
submitForm
()
{
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
this
.
$refs
[
"form"
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
this
.
form
.
id
)
{
if
(
this
.
form
.
id
)
{
updateSciencePlan
(
this
.
form
).
then
(()
=>
{
updateSciencePlan
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"修改成功"
)
this
.
$modal
.
msgSuccess
(
"修改成功"
)
;
this
.
open
=
false
this
.
open
=
false
;
this
.
getList
()
this
.
getList
()
;
})
})
;
}
else
{
}
else
{
addSciencePlan
(
this
.
form
).
then
(()
=>
{
addSciencePlan
(
this
.
form
).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"新增成功"
)
this
.
$modal
.
msgSuccess
(
"新增成功"
)
;
this
.
open
=
false
this
.
open
=
false
;
this
.
getList
()
this
.
getList
()
;
})
})
;
}
}
}
}
})
})
;
},
},
resetForm
()
{
resetForm
()
{
this
.
form
=
{
this
.
form
=
{
id
:
undefined
,
id
:
undefined
,
title
:
''
,
title
:
""
,
content
:
''
,
content
:
""
,
sortOrder
:
0
sortOrder
:
0
,
}
}
;
if
(
this
.
$refs
.
form
)
{
if
(
this
.
$refs
.
form
)
{
this
.
$refs
.
form
.
resetFields
()
this
.
$refs
.
form
.
resetFields
()
;
}
}
}
}
,
}
}
,
}
}
;
</
script
>
</
script
>
admin-ui/src/views/home
page
/value/index.vue
→
admin-ui/src/views/home/value/index.vue
View file @
57104fe8
...
@@ -198,23 +198,46 @@
...
@@ -198,23 +198,46 @@
</el-dialog>
</el-dialog>
<el-dialog
title=
"查看详情"
:visible
.
sync=
"viewOpen"
width=
"780px"
append-to-body
>
<el-dialog
title=
"查看详情"
:visible
.
sync=
"viewOpen"
width=
"780px"
append-to-body
>
<el-descriptions
:column=
"1"
border
>
<el-form
ref=
"viewForm"
:model=
"viewData"
label-width=
"80px"
>
<el-descriptions-item
label=
"标题"
>
{{ viewData.title }}
</el-descriptions-item>
<el-row>
<el-descriptions-item
label=
"图片"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"标题"
>
<span
class=
"detail-value"
>
{{ viewData.title }}
</span>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"图片"
>
<el-image
<el-image
v-if=
"viewData.image"
v-if=
"viewData.image"
style=
"width: 200px; height: 200px"
style=
"width: 200px; height: 200px"
:src=
"viewData.image"
:src=
"viewData.image"
:preview-src-list=
"[viewData.image]"
:preview-src-list=
"[viewData.image]"
/>
/>
</el-descriptions-item>
<span
v-else
class=
"detail-value"
>
未设置
</span>
<el-descriptions-item
label=
"概述"
>
{{ viewData.summary }}
</el-descriptions-item>
</el-form-item>
<el-descriptions-item
label=
"富文本"
>
</el-col>
<div
v-html=
"viewData.content"
></div>
<el-col
:span=
"24"
>
</el-descriptions-item>
<el-form-item
label=
"概述"
>
<el-descriptions-item
label=
"发布时间"
>
{{ parseTime(viewData.publishTime) }}
</el-descriptions-item>
<span
class=
"detail-value"
>
{{ viewData.summary }}
</span>
<el-descriptions-item
label=
"发布人"
>
{{ viewData.publishBy }}
</el-descriptions-item>
</el-form-item>
</el-descriptions>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"富文本"
>
<div
class=
"detail-content"
v-html=
"viewData.content"
></div>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"发布时间"
>
<span
class=
"detail-value"
>
{{ parseTime(viewData.publishTime) }}
</span>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"发布人"
>
<span
class=
"detail-value"
>
{{ viewData.publishBy }}
</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"viewOpen = false"
>
关 闭
</el-button>
<el-button
@
click=
"viewOpen = false"
>
关 闭
</el-button>
</div>
</div>
...
@@ -351,3 +374,16 @@ export default {
...
@@ -351,3 +374,16 @@ export default {
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-value
{
color
:
#606266
;
line-height
:
32px
;
}
.detail-content
{
color
:
#606266
;
line-height
:
1
.6
;
max-height
:
300px
;
overflow-y
:
auto
;
}
</
style
>
admin-ui/src/views/
system
/projectProgress/index.vue
→
admin-ui/src/views/
progress
/projectProgress/index.vue
View file @
57104fe8
...
@@ -5,8 +5,6 @@
...
@@ -5,8 +5,6 @@
<template
#
header
>
<template
#
header
>
<div
class=
"card-header"
>
<div
class=
"card-header"
>
<span>
项目实施进展
</span>
<span>
项目实施进展
</span>
<el-button
type=
"primary"
size=
"small"
@
click=
"toggleEdit"
v-if=
"!isEditing"
>
编辑
</el-button>
<el-button
type=
"success"
size=
"small"
@
click=
"handleSave"
v-if=
"isEditing"
>
保存
</el-button>
</div>
</div>
</
template
>
</
template
>
...
@@ -17,7 +15,6 @@
...
@@ -17,7 +15,6 @@
<el-input
<el-input
v-model=
"form.title"
v-model=
"form.title"
placeholder=
"请输入标题"
placeholder=
"请输入标题"
:disabled=
"!isEditing"
maxlength=
"50"
maxlength=
"50"
show-word-limit
show-word-limit
></el-input>
></el-input>
...
@@ -27,10 +24,13 @@
...
@@ -27,10 +24,13 @@
<el-form-item
label=
"详细介绍"
prop=
"content"
>
<el-form-item
label=
"详细介绍"
prop=
"content"
>
<editor
<editor
v-model=
"form.content"
v-model=
"form.content"
:disabled=
"!isEditing"
></editor>
></editor>
</el-form-item>
</el-form-item>
<div
class=
"button-center"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleSave"
>
保存
</el-button>
</div>
</el-card>
</el-card>
</el-form>
</el-form>
</div>
</div>
</template>
</template>
...
@@ -111,4 +111,9 @@ export default {
...
@@ -111,4 +111,9 @@ export default {
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
center
;
}
}
.button-center
{
display
:
flex
;
justify-content
:
center
;
margin-top
:
20px
;
}
</
style
>
</
style
>
admin-ui/src/views/project/intro/index.vue
View file @
57104fe8
...
@@ -15,17 +15,41 @@
...
@@ -15,17 +15,41 @@
</el-button>
</el-button>
</div>
</div>
<div
class=
"project-intro"
>
<div
class=
"project-intro"
>
<el-descriptions
:column=
"2"
border
>
<el-form
ref=
"viewForm"
:model=
"form"
label-width=
"120px"
>
<el-descriptions-item
label=
"项目名称"
>
{{
form
.
projectName
}}
</el-descriptions-item>
<el-row>
<el-descriptions-item
label=
"实施周期"
>
{{
form
.
implementationPeriod
}}
</el-descriptions-item>
<el-col
:span=
"12"
>
<el-descriptions-item
label=
"牵头单位"
>
{{
form
.
leadUnit
}}
</el-descriptions-item>
<el-form-item
label=
"项目名称"
>
<el-descriptions-item
label=
"核心参与单位"
>
{{
form
.
coreUnits
}}
</el-descriptions-item>
<span
class=
"form-view-text"
>
{{
form
.
projectName
}}
</span>
<el-descriptions-item
label=
"项目背景"
:span=
"2"
>
{{
form
.
projectBackground
}}
</el-descriptions-item>
</el-form-item>
<el-descriptions-item
label=
"总体目标"
:span=
"2"
>
{{
form
.
overallGoal
}}
</el-descriptions-item>
</el-col>
<el-descriptions-item
label=
"项目详情"
:span=
"2"
>
<el-col
:span=
"12"
>
<div
v-html=
"form.projectDetail"
></div>
<el-form-item
label=
"实施周期"
>
</el-descriptions-item>
<span
class=
"form-view-text"
>
{{
form
.
implementationPeriod
}}
</span>
</el-descriptions>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"牵头单位"
>
<span
class=
"form-view-text"
>
{{
form
.
leadUnit
}}
</span>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"核心参与单位"
>
<span
class=
"form-view-text"
>
{{
form
.
coreUnits
}}
</span>
</el-form-item>
</el-col>
</el-row>
<el-form-item
label=
"项目背景"
>
<span
class=
"form-view-text"
>
{{
form
.
projectBackground
}}
</span>
</el-form-item>
<el-form-item
label=
"总体目标"
>
<span
class=
"form-view-text"
>
{{
form
.
overallGoal
}}
</span>
</el-form-item>
<el-form-item
label=
"项目详情"
>
<div
class=
"form-view-text"
v-html=
"form.projectDetail"
></div>
</el-form-item>
</el-form>
</div>
</div>
</el-card>
</el-card>
...
@@ -162,4 +186,8 @@ export default {
...
@@ -162,4 +186,8 @@ export default {
.project-intro
{
.project-intro
{
padding
:
20px
;
padding
:
20px
;
}
}
.form-view-text
{
color
:
#606266
;
}
</
style
>
</
style
>
portal-ui/src/router/index.js
View file @
57104fe8
...
@@ -41,6 +41,12 @@ export const constantRoutes = [
...
@@ -41,6 +41,12 @@ export const constantRoutes = [
component
:
()
=>
import
(
'@/views/portal/Achievement'
),
component
:
()
=>
import
(
'@/views/portal/Achievement'
),
meta
:
{
title
:
'科研成果'
}
meta
:
{
title
:
'科研成果'
}
},
},
{
path
:
'achievement/detail'
,
name
:
'PortalAchievementDetail'
,
component
:
()
=>
import
(
'@/views/portal/AchievementDetail'
),
meta
:
{
title
:
'科研成果详情'
}
},
{
{
path
:
'application'
,
path
:
'application'
,
name
:
'PortalApplication'
,
name
:
'PortalApplication'
,
...
...
portal-ui/src/views/portal/Achievement.vue
View file @
57104fe8
This diff is collapsed.
Click to expand it.
ruoyi-admin/src/main/resources/application.yml
View file @
57104fe8
...
@@ -62,5 +62,5 @@ pagehelper:
...
@@ -62,5 +62,5 @@ pagehelper:
# 防止XSS攻击
# 防止XSS攻击
xss
:
xss
:
enabled
:
true
enabled
:
true
excludes
:
/system/notice
excludes
:
/system/notice
,/system/sciencePlan
urlPatterns
:
/system/*,/monitor/*,/tool/*
urlPatterns
:
/system/*,/monitor/*,/tool/*
ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
View file @
57104fe8
...
@@ -99,7 +99,8 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
...
@@ -99,7 +99,8 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
private
String
cleanJsonString
(
String
json
)
private
String
cleanJsonString
(
String
json
)
{
{
json
=
json
.
replaceAll
(
"\\\\"
,
""
);
// 移除反斜杠会影响JSON转义字符(如\n换行符),改为只移除特定的危险字符
// json = json.replaceAll("\\\\", "");
json
=
json
.
replaceAll
(
"`"
,
""
);
json
=
json
.
replaceAll
(
"`"
,
""
);
return
json
;
return
json
;
}
}
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
View file @
57104fe8
...
@@ -361,7 +361,7 @@ public class SysMenuServiceImpl implements ISysMenuService
...
@@ -361,7 +361,7 @@ public class SysMenuServiceImpl implements ISysMenuService
public
boolean
checkRouteConfigUnique
(
SysMenu
menu
)
public
boolean
checkRouteConfigUnique
(
SysMenu
menu
)
{
{
Long
menuId
=
StringUtils
.
isNull
(
menu
.
getMenuId
())
?
-
1L
:
menu
.
getMenuId
();
Long
menuId
=
StringUtils
.
isNull
(
menu
.
getMenuId
())
?
-
1L
:
menu
.
getMenuId
();
Long
parentId
=
menu
.
getParentId
();
Long
parentId
=
StringUtils
.
isNull
(
menu
.
getParentId
())
?
MENU_ROOT_ID
:
menu
.
getParentId
();
String
path
=
menu
.
getPath
();
String
path
=
menu
.
getPath
();
String
routeName
=
StringUtils
.
isEmpty
(
menu
.
getRouteName
())
?
path
:
menu
.
getRouteName
();
String
routeName
=
StringUtils
.
isEmpty
(
menu
.
getRouteName
())
?
path
:
menu
.
getRouteName
();
List
<
SysMenu
>
sysMenuList
=
menuMapper
.
selectMenusByPathOrRouteName
(
path
,
routeName
);
List
<
SysMenu
>
sysMenuList
=
menuMapper
.
selectMenusByPathOrRouteName
(
path
,
routeName
);
...
...
ruoyi-system/src/main/resources/mapper/system/SysAchievementMapper.xml
View file @
57104fe8
...
@@ -30,8 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -30,8 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
</sql>
<select
id=
"selectSysAchievementList"
parameterType=
"SysAchievement"
resultMap=
"SysAchievementResult"
>
<select
id=
"selectSysAchievementList"
parameterType=
"SysAchievement"
resultMap=
"SysAchievementResult"
>
select id, achievement_name, thumbnail, achievement_category, research_field, research_unit, researchers, publish_time, publisher, sort, status, create_by, create_time, update_by, update_time, remark
<include
refid=
"selectSysAchievementVo"
/>
from sys_achievement
<where>
<where>
<if
test=
"achievementName != null and achievementName != ''"
>
<if
test=
"achievementName != null and achievementName != ''"
>
AND achievement_name like concat('%', #{achievementName}, '%')
AND achievement_name like concat('%', #{achievementName}, '%')
...
@@ -59,8 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -59,8 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
</select>
<select
id=
"selectSysAchievementById"
parameterType=
"Long"
resultMap=
"SysAchievementResult"
>
<select
id=
"selectSysAchievementById"
parameterType=
"Long"
resultMap=
"SysAchievementResult"
>
select id, achievement_name, thumbnail, achievement_category, research_field, research_unit, researchers, publish_time, publisher, sort, status, create_by, create_time, update_by, update_time, remark
<include
refid=
"selectSysAchievementVo"
/>
from sys_achievement
where id = #{id}
where id = #{id}
</select>
</select>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment