Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-middle-front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-middle-front
Commits
ee37e1ca
Commit
ee37e1ca
authored
Sep 05, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
删除一些无用文件
parent
bb9120bf
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
0 additions
and
524 deletions
+0
-524
src/views/system/user/bf/authRole.vue
+0
-123
src/views/system/user/bf/index.vue
+0
-0
src/views/system/user/bf/profile/index.vue
+0
-94
src/views/system/user/bf/profile/resetPwd.vue
+0
-59
src/views/system/user/bf/profile/userAvatar.vue
+0
-181
src/views/system/user/bf/profile/userInfo.vue
+0
-67
No files found.
src/views/system/user/bf/authRole.vue
deleted
100644 → 0
View file @
bb9120bf
<
template
>
<div
class=
"app-container"
>
<h4
class=
"form-header h4"
>
基本信息
</h4>
<el-form
:model=
"form"
label-width=
"80px"
>
<el-row>
<el-col
:span=
"8"
:offset=
"2"
>
<el-form-item
label=
"用户昵称"
prop=
"nickName"
>
<el-input
v-model=
"form.nickName"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
:offset=
"2"
>
<el-form-item
label=
"登录账号"
prop=
"userName"
>
<el-input
v-model=
"form.userName"
disabled
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<h4
class=
"form-header h4"
>
角色信息
</h4>
<el-table
v-loading=
"loading"
:row-key=
"getRowKey"
@
row-click=
"clickRow"
ref=
"roleRef"
@
selection-change=
"handleSelectionChange"
:data=
"roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)"
>
<el-table-column
label=
"序号"
width=
"55"
type=
"index"
align=
"center"
>
<template
#
default=
"scope"
>
<span>
{{
(
pageNum
-
1
)
*
pageSize
+
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
type=
"selection"
:reserve-selection=
"true"
:selectable=
"checkSelectable"
width=
"55"
></el-table-column>
<el-table-column
label=
"角色编号"
align=
"center"
prop=
"roleId"
/>
<el-table-column
label=
"角色名称"
align=
"center"
prop=
"roleName"
/>
<el-table-column
label=
"权限字符"
align=
"center"
prop=
"roleKey"
/>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
#
default=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
v-model:page=
"pageNum"
v-model:limit=
"pageSize"
/>
<el-form
label-width=
"100px"
>
<div
style=
"text-align: center;margin-left:-120px;margin-top:30px;"
>
<el-button
type=
"primary"
@
click=
"submitForm()"
>
提交
</el-button>
<el-button
@
click=
"close()"
>
返回
</el-button>
</div>
</el-form>
</div>
</template>
<
script
setup
name=
"AuthRole"
>
import
{
getAuthRole
,
updateAuthRole
}
from
"@/api/system/user"
const
route
=
useRoute
()
const
{
proxy
}
=
getCurrentInstance
()
const
loading
=
ref
(
true
)
const
total
=
ref
(
0
)
const
pageNum
=
ref
(
1
)
const
pageSize
=
ref
(
10
)
const
roleIds
=
ref
([])
const
roles
=
ref
([])
const
form
=
ref
({
nickName
:
undefined
,
userName
:
undefined
,
userId
:
undefined
})
/** 单击选中行数据 */
function
clickRow
(
row
)
{
if
(
checkSelectable
(
row
))
{
proxy
.
$refs
[
"roleRef"
].
toggleRowSelection
(
row
)
}
}
/** 多选框选中数据 */
function
handleSelectionChange
(
selection
)
{
roleIds
.
value
=
selection
.
map
(
item
=>
item
.
roleId
)
}
/** 保存选中的数据编号 */
function
getRowKey
(
row
)
{
return
row
.
roleId
}
// 检查角色状态
function
checkSelectable
(
row
)
{
return
row
.
status
===
"0"
?
true
:
false
}
/** 关闭按钮 */
function
close
()
{
const
obj
=
{
path
:
"/system/user"
}
proxy
.
$tab
.
closeOpenPage
(
obj
)
}
/** 提交按钮 */
function
submitForm
()
{
const
userId
=
form
.
value
.
userId
const
rIds
=
roleIds
.
value
.
join
(
","
)
updateAuthRole
({
userId
:
userId
,
roleIds
:
rIds
}).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"授权成功"
)
close
()
})
}
(()
=>
{
const
userId
=
route
.
params
&&
route
.
params
.
userId
if
(
userId
)
{
loading
.
value
=
true
getAuthRole
(
userId
).
then
(
response
=>
{
form
.
value
=
response
.
user
roles
.
value
=
response
.
roles
total
.
value
=
roles
.
value
.
length
nextTick
(()
=>
{
roles
.
value
.
forEach
(
row
=>
{
if
(
row
.
flag
)
{
proxy
.
$refs
[
"roleRef"
].
toggleRowSelection
(
row
)
}
})
})
loading
.
value
=
false
})
}
})()
</
script
>
src/views/system/user/bf/index.vue
deleted
100644 → 0
View file @
bb9120bf
This diff is collapsed.
Click to expand it.
src/views/system/user/bf/profile/index.vue
deleted
100644 → 0
View file @
bb9120bf
<
template
>
<div
class=
"app-container"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"6"
:xs=
"24"
>
<el-card
class=
"box-card"
>
<template
v-slot:header
>
<div
class=
"clearfix"
>
<span>
个人信息
</span>
</div>
</
template
>
<div>
<div
class=
"text-center"
>
<userAvatar
/>
</div>
<ul
class=
"list-group list-group-striped"
>
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"user"
/>
用户名称
<div
class=
"pull-right"
>
{{ state.user.userName }}
</div>
</li>
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"phone"
/>
手机号码
<div
class=
"pull-right"
>
{{ state.user.phonenumber }}
</div>
</li>
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"email"
/>
用户邮箱
<div
class=
"pull-right"
>
{{ state.user.email }}
</div>
</li>
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"tree"
/>
所属部门
<div
class=
"pull-right"
v-if=
"state.user.dept"
>
{{ state.user.dept.deptName }} / {{ state.postGroup }}
</div>
</li>
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"peoples"
/>
所属角色
<div
class=
"pull-right"
>
{{ state.roleGroup }}
</div>
</li>
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"date"
/>
创建日期
<div
class=
"pull-right"
>
{{ state.user.createTime }}
</div>
</li>
</ul>
</div>
</el-card>
</el-col>
<el-col
:span=
"18"
:xs=
"24"
>
<el-card>
<
template
v-slot:header
>
<div
class=
"clearfix"
>
<span>
基本资料
</span>
</div>
</
template
>
<el-tabs
v-model=
"selectedTab"
>
<el-tab-pane
label=
"基本资料"
name=
"userinfo"
>
<userInfo
:user=
"state.user"
/>
</el-tab-pane>
<el-tab-pane
label=
"修改密码"
name=
"resetPwd"
>
<resetPwd
/>
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</el-row>
</div>
</template>
<
script
setup
name=
"Profile"
>
import
userAvatar
from
"./userAvatar"
import
userInfo
from
"./userInfo"
import
resetPwd
from
"./resetPwd"
import
{
getUserProfile
}
from
"@/api/system/user"
const
route
=
useRoute
()
const
selectedTab
=
ref
(
"userinfo"
)
const
state
=
reactive
({
user
:
{},
roleGroup
:
{},
postGroup
:
{}
})
function
getUser
()
{
getUserProfile
().
then
(
response
=>
{
state
.
user
=
response
.
data
state
.
roleGroup
=
response
.
roleGroup
state
.
postGroup
=
response
.
postGroup
})
}
onMounted
(()
=>
{
const
activeTab
=
route
.
params
&&
route
.
params
.
activeTab
if
(
activeTab
)
{
selectedTab
.
value
=
activeTab
}
getUser
()
})
</
script
>
src/views/system/user/bf/profile/resetPwd.vue
deleted
100644 → 0
View file @
bb9120bf
<
template
>
<el-form
ref=
"pwdRef"
:model=
"user"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"旧密码"
prop=
"oldPassword"
>
<el-input
v-model=
"user.oldPassword"
placeholder=
"请输入旧密码"
type=
"password"
show-password
/>
</el-form-item>
<el-form-item
label=
"新密码"
prop=
"newPassword"
>
<el-input
v-model=
"user.newPassword"
placeholder=
"请输入新密码"
type=
"password"
show-password
/>
</el-form-item>
<el-form-item
label=
"确认密码"
prop=
"confirmPassword"
>
<el-input
v-model=
"user.confirmPassword"
placeholder=
"请确认新密码"
type=
"password"
show-password
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submit"
>
保存
</el-button>
<el-button
type=
"danger"
@
click=
"close"
>
关闭
</el-button>
</el-form-item>
</el-form>
</
template
>
<
script
setup
>
import
{
updateUserPwd
}
from
"@/api/system/user"
const
{
proxy
}
=
getCurrentInstance
()
const
user
=
reactive
({
oldPassword
:
undefined
,
newPassword
:
undefined
,
confirmPassword
:
undefined
})
const
equalToPassword
=
(
rule
,
value
,
callback
)
=>
{
if
(
user
.
newPassword
!==
value
)
{
callback
(
new
Error
(
"两次输入的密码不一致"
))
}
else
{
callback
()
}
}
const
rules
=
ref
({
oldPassword
:
[{
required
:
true
,
message
:
"旧密码不能为空"
,
trigger
:
"blur"
}],
newPassword
:
[{
required
:
true
,
message
:
"新密码不能为空"
,
trigger
:
"blur"
},
{
min
:
6
,
max
:
20
,
message
:
"长度在 6 到 20 个字符"
,
trigger
:
"blur"
},
{
pattern
:
/^
[^
<>"'|
\\]
+$/
,
message
:
"不能包含非法字符:< >
\"
'
\\\
|"
,
trigger
:
"blur"
}],
confirmPassword
:
[{
required
:
true
,
message
:
"确认密码不能为空"
,
trigger
:
"blur"
},
{
required
:
true
,
validator
:
equalToPassword
,
trigger
:
"blur"
}]
})
/** 提交按钮 */
function
submit
()
{
proxy
.
$refs
.
pwdRef
.
validate
(
valid
=>
{
if
(
valid
)
{
updateUserPwd
(
user
.
oldPassword
,
user
.
newPassword
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"修改成功"
)
})
}
})
}
/** 关闭按钮 */
function
close
()
{
proxy
.
$tab
.
closePage
()
}
</
script
>
src/views/system/user/bf/profile/userAvatar.vue
deleted
100644 → 0
View file @
bb9120bf
<
template
>
<div
class=
"user-info-head"
@
click=
"editCropper()"
>
<img
:src=
"options.img"
title=
"点击上传头像"
class=
"img-circle img-lg"
/>
<el-dialog
:title=
"title"
v-model=
"open"
width=
"800px"
append-to-body
@
opened=
"modalOpened"
@
close=
"closeDialog"
>
<el-row>
<el-col
:xs=
"24"
:md=
"12"
:style=
"
{ height: '350px' }">
<vue-cropper
ref=
"cropper"
:img=
"options.img"
:info=
"true"
:autoCrop=
"options.autoCrop"
:autoCropWidth=
"options.autoCropWidth"
:autoCropHeight=
"options.autoCropHeight"
:fixedBox=
"options.fixedBox"
:outputType=
"options.outputType"
@
realTime=
"realTime"
v-if=
"visible"
/>
</el-col>
<el-col
:xs=
"24"
:md=
"12"
:style=
"
{ height: '350px' }">
<div
class=
"avatar-upload-preview"
>
<img
:src=
"options.previews.url"
:style=
"options.previews.img"
/>
</div>
</el-col>
</el-row>
<br
/>
<el-row>
<el-col
:lg=
"2"
:md=
"2"
>
<el-upload
action=
"#"
:http-request=
"requestUpload"
:show-file-list=
"false"
:before-upload=
"beforeUpload"
>
<el-button>
选择
<el-icon
class=
"el-icon--right"
><Upload
/></el-icon>
</el-button>
</el-upload>
</el-col>
<el-col
:lg=
"
{ span: 1, offset: 2 }" :md="2">
<el-button
icon=
"Plus"
@
click=
"changeScale(1)"
></el-button>
</el-col>
<el-col
:lg=
"
{ span: 1, offset: 1 }" :md="2">
<el-button
icon=
"Minus"
@
click=
"changeScale(-1)"
></el-button>
</el-col>
<el-col
:lg=
"
{ span: 1, offset: 1 }" :md="2">
<el-button
icon=
"RefreshLeft"
@
click=
"rotateLeft()"
></el-button>
</el-col>
<el-col
:lg=
"
{ span: 1, offset: 1 }" :md="2">
<el-button
icon=
"RefreshRight"
@
click=
"rotateRight()"
></el-button>
</el-col>
<el-col
:lg=
"
{ span: 2, offset: 6 }" :md="2">
<el-button
type=
"primary"
@
click=
"uploadImg()"
>
提 交
</el-button>
</el-col>
</el-row>
</el-dialog>
</div>
</
template
>
<
script
setup
>
import
"vue-cropper/dist/index.css"
import
{
VueCropper
}
from
"vue-cropper"
import
{
uploadAvatar
}
from
"@/api/system/user"
import
useUserStore
from
"@/store/modules/user"
const
userStore
=
useUserStore
()
const
{
proxy
}
=
getCurrentInstance
()
const
open
=
ref
(
false
)
const
visible
=
ref
(
false
)
const
title
=
ref
(
"修改头像"
)
//图片裁剪数据
const
options
=
reactive
({
img
:
userStore
.
avatar
,
// 裁剪图片的地址
autoCrop
:
true
,
// 是否默认生成截图框
autoCropWidth
:
200
,
// 默认生成截图框宽度
autoCropHeight
:
200
,
// 默认生成截图框高度
fixedBox
:
true
,
// 固定截图框大小 不允许改变
outputType
:
"png"
,
// 默认生成截图为PNG格式
filename
:
'avatar'
,
// 文件名称
previews
:
{}
//预览数据
})
/** 编辑头像 */
function
editCropper
()
{
open
.
value
=
true
}
/** 打开弹出层结束时的回调 */
function
modalOpened
()
{
visible
.
value
=
true
}
/** 覆盖默认上传行为 */
function
requestUpload
()
{}
/** 向左旋转 */
function
rotateLeft
()
{
proxy
.
$refs
.
cropper
.
rotateLeft
()
}
/** 向右旋转 */
function
rotateRight
()
{
proxy
.
$refs
.
cropper
.
rotateRight
()
}
/** 图片缩放 */
function
changeScale
(
num
)
{
num
=
num
||
1
proxy
.
$refs
.
cropper
.
changeScale
(
num
)
}
/** 上传预处理 */
function
beforeUpload
(
file
)
{
if
(
file
.
type
.
indexOf
(
"image/"
)
==
-
1
)
{
proxy
.
$modal
.
msgError
(
"文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
)
}
else
{
const
reader
=
new
FileReader
()
reader
.
readAsDataURL
(
file
)
reader
.
onload
=
()
=>
{
options
.
img
=
reader
.
result
options
.
filename
=
file
.
name
}
}
}
/** 上传图片 */
function
uploadImg
()
{
proxy
.
$refs
.
cropper
.
getCropBlob
(
data
=>
{
let
formData
=
new
FormData
()
formData
.
append
(
"avatarfile"
,
data
,
options
.
filename
)
uploadAvatar
(
formData
).
then
(
response
=>
{
open
.
value
=
false
options
.
img
=
import
.
meta
.
env
.
VITE_APP_BASE_API
+
response
.
imgUrl
userStore
.
avatar
=
options
.
img
proxy
.
$modal
.
msgSuccess
(
"修改成功"
)
visible
.
value
=
false
})
})
}
/** 实时预览 */
function
realTime
(
data
)
{
options
.
previews
=
data
}
/** 关闭窗口 */
function
closeDialog
()
{
options
.
img
=
userStore
.
avatar
options
.
visible
=
false
}
</
script
>
<
style
lang=
'scss'
scoped
>
.user-info-head
{
position
:
relative
;
display
:
inline-block
;
height
:
120px
;
}
.user-info-head
:hover:after
{
content
:
"+"
;
position
:
absolute
;
left
:
0
;
right
:
0
;
top
:
0
;
bottom
:
0
;
color
:
#eee
;
background
:
rgba
(
0
,
0
,
0
,
0.5
);
font-size
:
24px
;
font-style
:
normal
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
cursor
:
pointer
;
line-height
:
110px
;
border-radius
:
50%
;
}
</
style
>
\ No newline at end of file
src/views/system/user/bf/profile/userInfo.vue
deleted
100644 → 0
View file @
bb9120bf
<
template
>
<el-form
ref=
"userRef"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"用户昵称"
prop=
"nickName"
>
<el-input
v-model=
"form.nickName"
maxlength=
"30"
/>
</el-form-item>
<el-form-item
label=
"手机号码"
prop=
"phonenumber"
>
<el-input
v-model=
"form.phonenumber"
maxlength=
"11"
/>
</el-form-item>
<el-form-item
label=
"邮箱"
prop=
"email"
>
<el-input
v-model=
"form.email"
maxlength=
"50"
/>
</el-form-item>
<el-form-item
label=
"性别"
>
<el-radio-group
v-model=
"form.sex"
>
<el-radio
value=
"0"
>
男
</el-radio>
<el-radio
value=
"1"
>
女
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submit"
>
保存
</el-button>
<el-button
type=
"danger"
@
click=
"close"
>
关闭
</el-button>
</el-form-item>
</el-form>
</
template
>
<
script
setup
>
import
{
updateUserProfile
}
from
"@/api/system/user"
const
props
=
defineProps
({
user
:
{
type
:
Object
}
})
const
{
proxy
}
=
getCurrentInstance
()
const
form
=
ref
({})
const
rules
=
ref
({
nickName
:
[{
required
:
true
,
message
:
"用户昵称不能为空"
,
trigger
:
"blur"
}],
email
:
[{
required
:
true
,
message
:
"邮箱地址不能为空"
,
trigger
:
"blur"
},
{
type
:
"email"
,
message
:
"请输入正确的邮箱地址"
,
trigger
:
[
"blur"
,
"change"
]
}],
phonenumber
:
[{
required
:
true
,
message
:
"手机号码不能为空"
,
trigger
:
"blur"
},
{
pattern
:
/^1
[
3|4|5|6|7|8|9
][
0-9
]\d{8}
$/
,
message
:
"请输入正确的手机号码"
,
trigger
:
"blur"
}],
})
/** 提交按钮 */
function
submit
()
{
proxy
.
$refs
.
userRef
.
validate
(
valid
=>
{
if
(
valid
)
{
updateUserProfile
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"修改成功"
)
props
.
user
.
phonenumber
=
form
.
value
.
phonenumber
props
.
user
.
email
=
form
.
value
.
email
})
}
})
}
/** 关闭按钮 */
function
close
()
{
proxy
.
$tab
.
closePage
()
}
// 回显当前登录用户信息
watch
(()
=>
props
.
user
,
user
=>
{
if
(
user
)
{
form
.
value
=
{
nickName
:
user
.
nickName
,
phonenumber
:
user
.
phonenumber
,
email
:
user
.
email
,
sex
:
user
.
sex
}
}
},{
immediate
:
true
})
</
script
>
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