Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
safe-campus-bbs
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
万成波
safe-campus-bbs
Commits
80c71677
Commit
80c71677
authored
Aug 28, 2025
by
yuwenwen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
后台管理页面配置,话题管理接口对接
parent
8b6b9c7c
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
360 additions
and
930 deletions
+360
-930
safe-campus-bbs-ui/.env.development
safe-campus-bbs-ui/.env.development
+2
-2
safe-campus-bbs-ui/.env.production
safe-campus-bbs-ui/.env.production
+1
-1
safe-campus-bbs-ui/.env.staging
safe-campus-bbs-ui/.env.staging
+1
-1
safe-campus-bbs-ui/README.md
safe-campus-bbs-ui/README.md
+2
-2
safe-campus-bbs-ui/public/favicon.ico
safe-campus-bbs-ui/public/favicon.ico
+0
-0
safe-campus-bbs-ui/src/api/topic/index.js
safe-campus-bbs-ui/src/api/topic/index.js
+53
-0
safe-campus-bbs-ui/src/assets/logo/logo.png
safe-campus-bbs-ui/src/assets/logo/logo.png
+0
-0
safe-campus-bbs-ui/src/assets/styles/element-ui.scss
safe-campus-bbs-ui/src/assets/styles/element-ui.scss
+1
-0
safe-campus-bbs-ui/src/assets/styles/sidebar.scss
safe-campus-bbs-ui/src/assets/styles/sidebar.scss
+3
-3
safe-campus-bbs-ui/src/components/Breadcrumb/index.vue
safe-campus-bbs-ui/src/components/Breadcrumb/index.vue
+1
-1
safe-campus-bbs-ui/src/layout/components/Navbar.vue
safe-campus-bbs-ui/src/layout/components/Navbar.vue
+3
-14
safe-campus-bbs-ui/src/layout/components/Sidebar/Logo.vue
safe-campus-bbs-ui/src/layout/components/Sidebar/Logo.vue
+4
-4
safe-campus-bbs-ui/src/settings.js
safe-campus-bbs-ui/src/settings.js
+2
-2
safe-campus-bbs-ui/src/views/index.vue
safe-campus-bbs-ui/src/views/index.vue
+1
-899
safe-campus-bbs-ui/src/views/sensitives/index.vue
safe-campus-bbs-ui/src/views/sensitives/index.vue
+41
-0
safe-campus-bbs-ui/src/views/topic/FormDialog.vue
safe-campus-bbs-ui/src/views/topic/FormDialog.vue
+95
-0
safe-campus-bbs-ui/src/views/topic/index.vue
safe-campus-bbs-ui/src/views/topic/index.vue
+149
-0
safe-campus-bbs-ui/vue.config.js
safe-campus-bbs-ui/vue.config.js
+1
-1
No files found.
safe-campus-bbs-ui/.env.development
View file @
80c71677
# 页面标题
VUE_APP_TITLE =
若依管理系统
VUE_APP_TITLE =
一站式高校轻享平台
# 开发环境配置
ENV = 'development'
# 若依管理系统/开发环境
VUE_APP_BASE_API = 'http://
localhost
:8080'
VUE_APP_BASE_API = 'http://
192.168.1.44
:8080'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
safe-campus-bbs-ui/.env.production
View file @
80c71677
# 页面标题
VUE_APP_TITLE =
若依管理系统
VUE_APP_TITLE =
一站式高校轻享平台
# 生产环境配置
ENV = 'production'
...
...
safe-campus-bbs-ui/.env.staging
View file @
80c71677
# 页面标题
VUE_APP_TITLE =
若依管理系统
VUE_APP_TITLE =
一站式高校轻享平台
NODE_ENV = production
...
...
safe-campus-bbs-ui/README.md
View file @
80c71677
...
...
@@ -13,8 +13,8 @@ npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm
install
--registry
=
https://registry.npmmirror.com
# 启动服务
npm run dev
# 启动服务
(node 版本14.20.0)
npm run dev
```
浏览器访问 http://localhost:80
...
...
safe-campus-bbs-ui/public/favicon.ico
View replaced file @
8b6b9c7c
View file @
80c71677
5.53 KB
|
W:
|
H:
1.29 KB
|
W:
|
H:
2-up
Swipe
Onion skin
safe-campus-bbs-ui/src/api/topic/index.js
0 → 100644
View file @
80c71677
import
request
from
'
@/utils/request
'
// 话题列表
export
function
listData
(
params
)
{
return
request
({
url
:
'
/bbs/moment/topic/list
'
,
method
:
'
get
'
,
params
})
}
// 话题详情
export
function
detailData
(
id
)
{
return
request
({
url
:
`/bbs/moment/topic/
${
id
}
`
,
method
:
'
get
'
})
}
// 新增话题
export
function
addData
(
data
)
{
return
request
({
url
:
'
/bbs/moment/topic
'
,
method
:
'
post
'
,
data
})
}
// 修改话题
export
function
editData
(
data
)
{
return
request
({
url
:
'
/bbs/moment/topic
'
,
method
:
'
put
'
,
data
})
}
// 置顶话题
export
function
setTop
(
data
)
{
return
request
({
url
:
'
/bbs/moment/topic/top
'
,
method
:
'
put
'
,
data
})
}
// 删除话题
export
function
delData
(
id
)
{
return
request
({
url
:
`/bbs/moment/topic/
${
id
}
`
,
method
:
'
delete
'
})
}
safe-campus-bbs-ui/src/assets/logo/logo.png
View replaced file @
8b6b9c7c
View file @
80c71677
5.53 KB
|
W:
|
H:
1.29 KB
|
W:
|
H:
2-up
Swipe
Onion skin
safe-campus-bbs-ui/src/assets/styles/element-ui.scss
View file @
80c71677
...
...
@@ -3,6 +3,7 @@
.el-breadcrumb__inner
,
.el-breadcrumb__inner
a
{
font-weight
:
400
!
important
;
color
:
white
!
important
;
}
.el-upload
{
...
...
safe-campus-bbs-ui/src/assets/styles/sidebar.scss
View file @
80c71677
...
...
@@ -15,7 +15,7 @@
-webkit-transition
:
width
.28s
;
transition
:
width
0
.28s
;
width
:
$base-sidebar-width
!
important
;
background-color
:
$base-menu-background
;
background-color
:
#007BFF
;
height
:
100%
;
position
:
fixed
;
font-size
:
0px
;
...
...
@@ -24,8 +24,8 @@
left
:
0
;
z-index
:
1001
;
overflow
:
hidden
;
-webkit-box-shadow
:
2px
0
6px
rgba
(
0
,
21
,
41
,.
35
);
box-shadow
:
2px
0
6px
rgba
(
0
,
21
,
41
,.
35
);
//
-webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
//
box-shadow: 2px 0 6px rgba(0,21,41,.35);
// reset element-ui css
.horizontal-collapse-transition
{
...
...
safe-campus-bbs-ui/src/components/Breadcrumb/index.vue
View file @
80c71677
...
...
@@ -67,7 +67,7 @@ export default {
margin-left
:
8px
;
.no-redirect
{
color
:
#97a8b
e
;
color
:
whit
e
;
cursor
:
text
;
}
}
...
...
safe-campus-bbs-ui/src/layout/components/Navbar.vue
View file @
80c71677
...
...
@@ -10,20 +10,8 @@
<template
v-if=
"device!=='mobile'"
>
<search
id=
"header-search"
class=
"right-menu-item"
/>
<!--
<el-tooltip
content=
"源码地址"
effect=
"dark"
placement=
"bottom"
>
-->
<!--
<ruo-yi-git
id=
"ruoyi-git"
class=
"right-menu-item hover-effect"
/>
-->
<!--
</el-tooltip>
-->
<!--
<el-tooltip
content=
"文档地址"
effect=
"dark"
placement=
"bottom"
>
-->
<!--
<ruo-yi-doc
id=
"ruoyi-doc"
class=
"right-menu-item hover-effect"
/>
-->
<!--
</el-tooltip>
-->
<screenfull
id=
"screenfull"
class=
"right-menu-item hover-effect"
/>
<!--
<el-tooltip
content=
"布局大小"
effect=
"dark"
placement=
"bottom"
>
-->
<!--
<size-select
id=
"size-select"
class=
"right-menu-item hover-effect"
/>
-->
<!--
</el-tooltip>
-->
</
template
>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
...
...
@@ -117,7 +105,7 @@ export default {
height
:
50px
;
overflow
:
hidden
;
position
:
relative
;
background
:
#
fff
;
background
:
#
007BFF
;
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,
.08
);
.hamburger-container
{
...
...
@@ -127,6 +115,7 @@ export default {
cursor
:
pointer
;
transition
:
background
.3s
;
-webkit-tap-highlight-color
:
transparent
;
color
:
white
;
&
:hover
{
background
:
rgba
(
0
,
0
,
0
,
.025
)
...
...
@@ -161,7 +150,7 @@ export default {
padding
:
0
8px
;
height
:
100%
;
font-size
:
18px
;
color
:
#5a5e66
;
color
:
white
;
vertical-align
:
text-bottom
;
&
.hover-effect
{
...
...
safe-campus-bbs-ui/src/layout/components/Sidebar/Logo.vue
View file @
80c71677
<
template
>
<div
class=
"sidebar-logo-container"
:class=
"
{'collapse':collapse}"
:style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"
>
<div
class=
"sidebar-logo-container"
:class=
"
{'collapse':collapse}" >
<transition
name=
"sidebarLogoFade"
>
<router-link
v-if=
"collapse"
key=
"collapse"
class=
"sidebar-logo-link"
to=
"/"
>
<img
v-if=
"logo"
:src=
"logo"
class=
"sidebar-logo"
/>
...
...
@@ -7,7 +7,7 @@
</router-link>
<router-link
v-else
key=
"expand"
class=
"sidebar-logo-link"
to=
"/"
>
<img
v-if=
"logo"
:src=
"logo"
class=
"sidebar-logo"
/>
<h1
class=
"sidebar-title"
:style=
"
{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }"
>
{{
title
}}
</h1>
<h1
class=
"sidebar-title"
>
{{
title
}}
</h1>
</router-link>
</transition>
</div>
...
...
@@ -35,7 +35,7 @@ export default {
},
data
()
{
return
{
title
:
'
若依管理系统
'
,
title
:
'
一站式高校轻享平台
'
,
logo
:
logoImg
}
}
...
...
@@ -57,7 +57,7 @@ export default {
width
:
100%
;
height
:
50px
;
line-height
:
50px
;
background
:
#
2b2f3a
;
background
:
#
007BFF
;
text-align
:
center
;
overflow
:
hidden
;
...
...
safe-campus-bbs-ui/src/settings.js
View file @
80c71677
...
...
@@ -2,7 +2,7 @@ module.exports = {
/**
* 侧边栏主题 深色主题theme-dark,浅色主题theme-light
*/
sideTheme
:
'
theme-
dark
'
,
sideTheme
:
'
theme-
light
'
,
/**
* 是否系统布局配置
...
...
@@ -17,7 +17,7 @@ module.exports = {
/**
* 是否显示 tagsView
*/
tagsView
:
tru
e
,
tagsView
:
fals
e
,
/**
* 是否固定头部
...
...
safe-campus-bbs-ui/src/views/index.vue
View file @
80c71677
This diff is collapsed.
Click to expand it.
safe-campus-bbs-ui/src/views/sensitives/index.vue
0 → 100644
View file @
80c71677
<
template
>
<div
class=
"app-container"
>
<div
class=
"page-container"
></div>
</div>
</
template
>
<
script
>
export
default
{
name
:
'
Sensitives
'
,
data
()
{
return
{
}
},
created
()
{
},
mounted
()
{
},
methods
:
{
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.app-container
{
background-color
:
rgba
(
241
,
242
,
247
,
1
);
height
:
calc
(
100vh
-
50px
);
.page-container
{
background-color
:
white
;
height
:
100%
;
border-radius
:
6px
;
padding
:
20px
30px
;
box-sizing
:
border-box
;
overflow
:
auto
;
}
}
</
style
>
\ No newline at end of file
safe-campus-bbs-ui/src/views/topic/FormDialog.vue
0 → 100644
View file @
80c71677
<
template
>
<el-dialog
:visible.sync=
"visible"
:title=
"dialogTitle"
width=
"28%"
class=
"dialog"
@
close=
"handleClose"
>
<el-form
:model=
"form"
ref=
"formRef"
:rules=
"rules"
>
<el-form-item
label=
"话题名称"
prop=
"name"
>
<el-input
placeholder=
"请输入"
v-model=
"form.name"
></el-input>
</el-form-item>
<el-form-item
label=
"排序"
prop=
"sort"
>
<el-input-number
placeholder=
"请输入"
style=
"width: 100%;"
v-model=
"form.sort"
:min=
"0"
:step=
"1"
:step-strictly=
"true"
></el-input-number>
</el-form-item>
</el-form>
<template
#footer
>
<el-button
@
click=
"handleClose"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
确认
</el-button>
</
template
>
</el-dialog>
</template>
<
script
>
import
{
addData
,
detailData
,
editData
}
from
'
@/api/topic
'
;
export
default
{
name
:
'
FormDialog
'
,
data
()
{
return
{
visible
:
false
,
dialogTitle
:
'
新增话题
'
,
form
:
{},
rules
:
{
name
:
[{
required
:
true
,
message
:
'
请输入话题名称
'
,
trigger
:
'
blur
'
}]
}
}
},
methods
:
{
openModal
(
row
)
{
this
.
visible
=
true
;
if
(
row
)
{
this
.
dialogTitle
=
'
修改话题
'
;
this
.
getDetail
(
row
)
}
else
{
this
.
dialogTitle
=
'
新增话题
'
}
},
// 查详情
getDetail
(
row
)
{
detailData
(
row
.
id
).
then
(
res
=>
{
console
.
log
(
res
)
this
.
form
=
{
...
res
.
data
}
})
},
// 提交
handleSubmit
()
{
this
.
$refs
.
formRef
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
form
.
id
)
{
editData
(
this
.
form
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
$modal
.
msgSuccess
(
"
修改成功
"
);
this
.
handleClose
()
this
.
$emit
(
'
handleOk
'
)
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
||
"
修改失败
"
);
this
.
handleClose
()
}
})
}
else
{
addData
(
this
.
form
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
$modal
.
msgSuccess
(
"
新增成功
"
);
this
.
handleClose
()
this
.
$emit
(
'
handleOk
'
)
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
||
"
新增失败
"
);
this
.
handleClose
()
}
})
}
}
})
},
// 关闭
handleClose
()
{
this
.
form
=
{};
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
"scss"
>
.dialog
{
.el-dialog__body
{
padding
:
0
20px
!
important
;
}
}
</
style
>
\ No newline at end of file
safe-campus-bbs-ui/src/views/topic/index.vue
0 → 100644
View file @
80c71677
<
template
>
<div
class=
"app-container"
>
<div
class=
"page-container"
>
<el-form
:model=
"queryParams"
:inline=
"true"
label-width=
"90"
>
<el-form-item
label=
"话题名称"
>
<el-input
v-model=
"queryParams.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"话题来源"
>
<el-select
v-model=
"queryParams.source"
placeholder=
"请选择"
>
<el-option
label=
"轻享广场"
value=
"轻享广场"
></el-option>
<el-option
label=
"后台管理"
value=
"后台管理"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"handleQuery"
>
查询
</el-button>
<el-button
@
click=
"handleReset"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
class=
"mb10"
>
<el-col
:span=
"2"
>
<el-button
type=
"primary"
@
click=
"handleAdd"
>
新增话题
</el-button>
</el-col>
</el-row>
<el-table
:data=
"tableList"
>
<el-table-column
label=
"序号"
width=
"55"
type=
"index"
align=
"center"
></el-table-column>
<el-table-column
label=
"话题名称"
prop=
"name"
align=
"center"
></el-table-column>
<el-table-column
label=
"来源"
prop=
"source"
align=
"center"
></el-table-column>
<el-table-column
label=
"排序"
prop=
"sort"
align=
"center"
></el-table-column>
<el-table-column
label=
"置顶"
prop=
"isTop"
align=
"center"
>
<template
#default
="
{ row }">
<span
v-if=
"row.isTop == 1"
style=
"color: #007BFF;"
>
是
</span>
<span
v-if=
"row.isTop == 0"
style=
"color: #FF645F;"
>
否
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
prop=
"createTime"
align=
"center"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
>
<
template
#default
="{
row
}"
>
<el-button
type=
"text"
@
click=
"handleUpdate(row)"
>
修改
</el-button>
<el-button
type=
"text"
@
click=
"handleDelete(row)"
>
删除
</el-button>
<el-button
type=
"text"
v-if=
"row.isTop == '0'"
@
click=
"handleSetTop(row)"
>
置顶
</el-button>
<el-button
type=
"text"
v-if=
"row.isTop == '1'"
@
click=
"handleSetTop(row)"
>
取消置顶
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNum"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</div>
<!-- 表单 -->
<form-dialog
ref=
"formDialogRef"
@
handleOk=
"handleReset"
></form-dialog>
</div>
</template>
<
script
>
import
{
listData
,
setTop
,
delData
}
from
'
@/api/topic
'
;
import
FormDialog
from
'
./FormDialog.vue
'
;
export
default
{
name
:
'
Topic
'
,
data
()
{
return
{
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
},
tableList
:
[],
total
:
0
}
},
components
:
{
FormDialog
},
created
()
{
},
mounted
()
{
this
.
getList
()
},
methods
:
{
// 列表数据
getList
()
{
listData
(
this
.
queryParams
).
then
(
res
=>
{
console
.
log
(
res
)
this
.
tableList
=
res
.
rows
;
this
.
total
=
res
.
total
})
},
// 新增
handleAdd
()
{
this
.
$refs
.
formDialogRef
.
openModal
()
},
// 修改
handleUpdate
(
row
)
{
this
.
$refs
.
formDialogRef
.
openModal
(
row
)
},
// 置顶
handleSetTop
(
row
)
{
let
data
=
{
id
:
row
.
id
,
isTop
:
row
.
isTop
==
0
?
1
:
0
}
let
text
=
row
.
isTop
==
0
?
'
置顶
'
:
'
取消置顶
'
this
.
$modal
.
confirm
(
'
确认要
'
+
text
+
'
话题名称为:
'
+
row
.
name
+
'
的数据吗?
'
).
then
(
function
()
{
return
setTop
(
data
);
}).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
text
+
"
成功
"
);
this
.
getList
()
})
},
// 删除
handleDelete
(
row
)
{
this
.
$modal
.
confirm
(
'
确认要删除话题名称为:
'
+
row
.
name
+
'
的数据吗?
'
).
then
(
function
()
{
return
delData
(
row
.
id
);
}).
then
(()
=>
{
this
.
$modal
.
msgSuccess
(
"
删除成功
"
);
this
.
getList
()
})
},
// 查询
handleQuery
()
{
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
()
},
// 重置
handleReset
()
{
this
.
queryParams
=
{
pageNum
:
1
,
pageSize
:
10
}
this
.
getList
()
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.app-container
{
background-color
:
rgba
(
241
,
242
,
247
,
1
);
height
:
calc
(
100vh
-
50px
);
.page-container
{
background-color
:
white
;
height
:
100%
;
border-radius
:
6px
;
padding
:
20px
30px
;
box-sizing
:
border-box
;
overflow
:
auto
;
}
}
</
style
>
\ No newline at end of file
safe-campus-bbs-ui/vue.config.js
View file @
80c71677
...
...
@@ -7,7 +7,7 @@ function resolve(dir) {
const
CompressionPlugin
=
require
(
'
compression-webpack-plugin
'
)
const
name
=
process
.
env
.
VUE_APP_TITLE
||
'
若依管理系统
'
// 网页标题
const
name
=
process
.
env
.
VUE_APP_TITLE
||
'
一站式高校轻享平台
'
// 网页标题
const
port
=
process
.
env
.
port
||
process
.
env
.
npm_config_port
||
80
// 端口
...
...
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