明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_front
Project
Project
Details
Activity
Releases
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
Administrator
jt_front
Commits
189a486f
Commit
189a486f
authored
Mar 11, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1\
parent
43436c6b
Pipeline
#108215
passed with stage
in 20 seconds
Changes
4
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
96 additions
and
59 deletions
+96
-59
index.vue
src/components/FileUploader/index.vue
+6
-1
MainLayout.vue
src/layouts/MainLayout.vue
+20
-12
departManage.vue
src/views/systemManage/departManage.vue
+1
-1
userManage.vue
src/views/systemManage/userManage.vue
+69
-45
No files found.
src/components/FileUploader/index.vue
View file @
189a486f
...
...
@@ -40,7 +40,11 @@
<span>
{{
formatDate
(
row
.
updatedAt
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"size"
label=
"大小"
/>
<el-table-column
prop=
"size"
label=
"大小"
>
<
template
#
default=
"{ row }"
>
<span>
{{
row
.
size
}}
MB
</span>
</
template
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"100"
>
<
template
#
default=
"{ row, $index }"
>
<span
class=
"download-btn"
@
click=
"handleDownload(row)"
>
下载
</span>
...
...
@@ -207,6 +211,7 @@ const formatDate = (date) => {
const
handleUploadSuccess
=
(
res
)
=>
{
if
(
res
&&
res
.
data
)
{
fileList
.
value
=
[...
fileList
.
value
,
res
.
data
];
console
.
log
(
"上传成功:"
,
res
.
data
);
ElMessage
.
success
(
"文件上传成功"
);
popoverVisible
.
value
=
false
;
}
...
...
src/layouts/MainLayout.vue
View file @
189a486f
...
...
@@ -53,6 +53,7 @@ import LeftMenu from "./leftMenu.vue";
import
axios
from
"axios"
;
// watch中使用proxy会有warning
const
userStore
=
useUserStore
();
const
proxyRef
=
ref
(
null
);
const
{
proxy
}
=
getCurrentInstance
();
// 在 setup 中设置
const
instance
=
getCurrentInstance
();
...
...
@@ -69,29 +70,36 @@ const route = useRoute();
// 获取资源库数据
const
getResourceData
=
()
=>
{
axios
.
post
(
windowConfig
.
baseUrl
+
"/api/resource/listResourceAll"
,
{}).
then
((
res
)
=>
{
axios
.
post
(
windowConfig
.
baseUrl
+
"/api/resource/listResourceAll"
,
{})
.
then
((
res
)
=>
{
sessionStorage
.
setItem
(
"resourceData"
,
JSON
.
stringify
(
res
.
data
));
})
});
};
// 获取未读消息数量
let
messageCount
=
ref
(
0
);
const
getMessageCount
=
()
=>
{
axios
.
post
(
windowConfig
.
baseUrl
+
"/api/message/getMesCount"
,
{}).
then
((
res
)
=>
{
axios
.
post
(
windowConfig
.
baseUrl
+
"/api/message/getMesCount"
,
{})
.
then
((
res
)
=>
{
messageCount
.
value
=
res
.
data
.
count
;
})
});
};
// 跳转消息列表页
const
toMessagePage
=
()
=>
{
router
.
push
(
"/message"
);
}
}
;
onMounted
(()
=>
{
getResourceData
();
getMessageCount
();
});
watch
(()
=>
route
.
path
,
()
=>
{
watch
(
()
=>
route
.
path
,
()
=>
{
getMessageCount
();
})
},
);
// 处理退出登录
const
handleLogout
=
()
=>
{
// 清除登录状态
...
...
@@ -182,11 +190,11 @@ const handleLogout = () => {
.header-right {
display: flex;
align-items: center;
.message-wrap{
.message-wrap
{
position: relative;
margin-right: 10px;
cursor: pointer;
.count{
.count
{
position: absolute;
top: -5px;
right: -5px;
...
...
src/views/systemManage/departManage.vue
View file @
189a486f
...
...
@@ -93,7 +93,7 @@
:rules=
"departRules"
label-width=
"100"
>
<el-form-item
label=
"
项目
名称"
prop=
"name"
>
<el-form-item
label=
"
部门
名称"
prop=
"name"
>
<el-input
v-model=
"departFormData.name"
/>
</el-form-item>
</el-form>
...
...
src/views/systemManage/userManage.vue
View file @
189a486f
...
...
@@ -4,7 +4,11 @@
<div
class=
"header-left"
>
<el-form
:inline=
"true"
:model=
"searchForm"
>
<el-form-item
label=
"关键字查询"
>
<el-input
v-model=
"searchForm.name"
clearable
@
keydown
.
enter=
"handleSearch"
/>
<el-input
v-model=
"searchForm.name"
clearable
@
keydown
.
enter=
"handleSearch"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"handleSearch"
>
查询
</el-button>
...
...
@@ -34,13 +38,13 @@
@
current-page-change=
"handleCurrentPageChange"
>
<template
#
departs=
"
{ row }">
<div>
{{
row
.
departs
?.
map
(
item
=>
item
.
name
).
join
(
","
)
}}
</div>
<div>
{{
row
.
departs
?.
map
(
(
item
)
=>
item
.
name
).
join
(
","
)
}}
</div>
</
template
>
<
template
#
positions=
"{ row }"
>
<div>
{{
row
.
positions
?.
map
(
item
=>
item
.
name
).
join
(
","
)
}}
</div>
<div>
{{
row
.
positions
?.
map
(
(
item
)
=>
item
.
name
).
join
(
","
)
}}
</div>
</
template
>
<
template
#
roles=
"{ row }"
>
<div>
{{
row
.
roles
?.
map
(
item
=>
item
.
name
).
join
(
","
)
}}
</div>
<div>
{{
row
.
roles
?.
map
(
(
item
)
=>
item
.
name
).
join
(
","
)
}}
</div>
</
template
>
<
template
#
enable=
"{ row }"
>
<el-switch
...
...
@@ -52,10 +56,20 @@
</
template
>
<
template
#
operations=
"{ row, index }"
>
<el-button
link
type=
"primary"
size=
"small"
@
click=
"handleEdit(row, index)"
>
<el-button
link
type=
"primary"
size=
"small"
@
click=
"handleEdit(row, index)"
>
编辑
</el-button>
<el-button
link
type=
"danger"
size=
"small"
@
click=
"handleDelete(row, index)"
>
<el-button
link
type=
"danger"
size=
"small"
@
click=
"handleDelete(row, index)"
>
删除
</el-button>
</
template
>
...
...
@@ -67,23 +81,32 @@
:title=
"dialogTitle"
width=
"600px"
@
close=
"cancelUserForm"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
>
<el-form
:model=
"userFormData"
ref=
"userForm"
:rules=
"userRules"
label-width=
"100"
>
<el-form
:model=
"userFormData"
ref=
"userForm"
:rules=
"userRules"
label-width=
"100"
>
<el-form-item
label=
"用户姓名"
prop=
"name"
>
<el-input
v-model=
"userFormData.name"
placeholder=
"请输入用户姓名"
/>
</el-form-item>
<el-form-item
label=
"手机号码"
prop=
"mobile"
>
<el-input
v-model=
"userFormData.mobile"
placeholder=
"请输入手机号码"
/>
<el-input
v-model=
"userFormData.mobile"
placeholder=
"请输入手机号码"
/>
</el-form-item>
<el-form-item
label=
"所属部门"
>
<el-tree-select
v-model=
"userFormData.departs"
:data=
"departmentData"
node-key=
"id"
:props=
"{label: 'name'
}"
:props=
"{ label: 'name'
}"
placeholder=
"请选择所属部门"
multiple
showCheckbox
multiple
:render-after-expand=
"false"
/>
</el-form-item>
...
...
@@ -98,12 +121,17 @@
</el-select>
</el-form-item> -->
<el-form-item
label=
"角色"
>
<el-select
v-model=
"userFormData.roles"
<el-select
v-model=
"userFormData.roles"
multiple
placeholder=
"请选择角色"
no-data-text=
"暂无数据"
placeholder=
"请选择角色"
no-data-text=
"暂无数据"
>
<el-option
v-for=
"item in rolesData"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
<el-option
v-for=
"item in rolesData"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -233,12 +261,8 @@ const loadRolesData = () => {
};
// 表单验证规则
const
userRules
=
{
name
:
[
{
required
:
true
,
message
:
"请输入用户姓名"
,
trigger
:
"blur"
}
],
mobile
:
[
{
required
:
true
,
message
:
"请输入手机号码"
,
trigger
:
"blur"
}
]
name
:
[{
required
:
true
,
message
:
"请输入用户姓名"
,
trigger
:
"blur"
}],
mobile
:
[{
required
:
true
,
message
:
"请输入手机号码"
,
trigger
:
"blur"
}],
};
// 事件处理函数
...
...
@@ -271,8 +295,8 @@ const handleEdit = (row, index) => {
data
:
{
id
:
row
.
id
},
callback
:
(
data
)
=>
{
userFormData
.
value
=
{
...
data
};
userFormData
.
value
.
departs
=
data
.
departs
.
map
(
item
=>
item
.
id
)
userFormData
.
value
.
roles
=
data
.
roles
.
map
(
item
=>
item
.
id
)
userFormData
.
value
.
departs
=
data
.
departs
.
map
(
(
item
)
=>
item
.
id
);
userFormData
.
value
.
roles
=
data
.
roles
.
map
(
(
item
)
=>
item
.
id
);
},
error
:
(
err
)
=>
{
ElMessage
.
error
(
"编辑失败:"
,
err
);
...
...
@@ -304,7 +328,7 @@ const handleDelete = async (row, index) => {
};
const
saveUserForm
=
()
=>
{
userForm
.
value
.
validate
(
valid
=>
{
userForm
.
value
.
validate
(
(
valid
)
=>
{
if
(
valid
)
{
let
url
=
userFormData
.
value
.
id
?
"updateUser"
:
"createUser"
;
proxy
.
$post
({
...
...
@@ -320,7 +344,7 @@ const saveUserForm = () => {
},
});
}
})
})
;
};
const
cancelUserForm
=
()
=>
{
userFormData
.
value
=
{};
...
...
@@ -341,7 +365,7 @@ const handleStatusChange = (newValue, row) => {
callback
:
(
data
)
=>
{
loadTableData
();
ElMessage
.
success
(
`用户状态已
${
newEnableValue
===
"0"
?
"启用"
:
"停用"
}
`
`用户状态已
${
newEnableValue
===
"0"
?
"启用"
:
"停用"
}
`
,
);
},
error
:
(
err
)
=>
{
...
...
@@ -381,5 +405,5 @@ onMounted(() => {
</
script
>
<
style
scoped
lang=
"less"
>
@import "@/styles/manage.less";
@import "@/styles/manage.less";
</
style
>
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