Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
front-backend
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
0
Merge Requests
0
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
framework
front-backend
Commits
d41b76a9
Commit
d41b76a9
authored
Sep 07, 2019
by
dqjdda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成了本地存储功能,用户头像存储方式改为本地,其他细节优化
parent
9fad80b1
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
89 additions
and
33 deletions
+89
-33
src/api/localStorage.js
+8
-0
src/assets/avatar/avatar.png
+0
-0
src/layout/components/Navbar.vue
+5
-3
src/main.js
+6
-1
src/views/features/401.vue
+0
-1
src/views/system/user/center.vue
+5
-3
src/views/tools/storage/index.vue
+13
-4
src/views/tools/storage/local/form.vue
+1
-1
src/views/tools/storage/local/index.vue
+48
-6
src/views/tools/storage/qiniu/index.vue
+3
-14
No files found.
src/api/localStorage.js
View file @
d41b76a9
...
@@ -15,6 +15,14 @@ export function del(id) {
...
@@ -15,6 +15,14 @@ export function del(id) {
})
})
}
}
export
function
delAll
(
ids
)
{
return
request
({
url
:
'api/localStorage/'
,
method
:
'delete'
,
data
:
ids
})
}
export
function
edit
(
data
)
{
export
function
edit
(
data
)
{
return
request
({
return
request
({
url
:
'api/localStorage'
,
url
:
'api/localStorage'
,
...
...
src/assets/avatar/avatar.png
0 → 100644
View file @
d41b76a9
4 KB
src/layout/components/Navbar.vue
View file @
d41b76a9
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
</
template
>
</
template
>
<el-dropdown
class=
"avatar-container right-menu-item"
trigger=
"click"
>
<el-dropdown
class=
"avatar-container right-menu-item"
trigger=
"click"
>
<div
class=
"avatar-wrapper"
>
<div
class=
"avatar-wrapper"
>
<img
:src=
"user.avatar"
class=
"user-avatar"
>
<img
:src=
"user.avatar
? baseApi + '/avatar/' + user.avatar : Avatar
"
class=
"user-avatar"
>
<i
class=
"el-icon-caret-bottom"
/>
<i
class=
"el-icon-caret-bottom"
/>
</div>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
...
@@ -46,7 +46,7 @@ import { mapGetters } from 'vuex'
...
@@ -46,7 +46,7 @@ import { mapGetters } from 'vuex'
import
Breadcrumb
from
'@/components/Breadcrumb'
import
Breadcrumb
from
'@/components/Breadcrumb'
import
Hamburger
from
'@/components/Hamburger'
import
Hamburger
from
'@/components/Hamburger'
import
Screenfull
from
'@/components/Screenfull'
import
Screenfull
from
'@/components/Screenfull'
import
Avatar
from
'@/assets/avatar/avatar.png'
export
default
{
export
default
{
components
:
{
components
:
{
Breadcrumb
,
Breadcrumb
,
...
@@ -55,6 +55,7 @@ export default {
...
@@ -55,6 +55,7 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
Avatar
:
Avatar
,
dialogVisible
:
false
dialogVisible
:
false
}
}
},
},
...
@@ -62,7 +63,8 @@ export default {
...
@@ -62,7 +63,8 @@ export default {
...
mapGetters
([
...
mapGetters
([
'sidebar'
,
'sidebar'
,
'user'
,
'user'
,
'device'
'device'
,
'baseApi'
]),
]),
show
:
{
show
:
{
get
()
{
get
()
{
...
...
src/main.js
View file @
d41b76a9
...
@@ -6,7 +6,6 @@ import 'element-ui/lib/theme-chalk/index.css'
...
@@ -6,7 +6,6 @@ import 'element-ui/lib/theme-chalk/index.css'
import
locale
from
'element-ui/lib/locale/lang/zh-CN'
// lang i18n
import
locale
from
'element-ui/lib/locale/lang/zh-CN'
// lang i18n
import
mavonEditor
from
'mavon-editor'
import
mavonEditor
from
'mavon-editor'
import
'mavon-editor/dist/css/index.css'
import
'mavon-editor/dist/css/index.css'
import
'@/styles/index.scss'
// global css
import
'@/styles/index.scss'
// global css
import
App
from
'./App'
import
App
from
'./App'
...
@@ -16,6 +15,7 @@ import store from './store'
...
@@ -16,6 +15,7 @@ import store from './store'
import
'@/icons'
// icon
import
'@/icons'
// icon
import
'./router/index'
// permission control
import
'./router/index'
// permission control
import
Router
from
'vue-router'
Vue
.
use
(
mavonEditor
)
Vue
.
use
(
mavonEditor
)
Vue
.
use
(
permission
)
Vue
.
use
(
permission
)
...
@@ -23,6 +23,11 @@ Vue.use(ElementUI, { locale })
...
@@ -23,6 +23,11 @@ Vue.use(ElementUI, { locale })
Vue
.
config
.
productionTip
=
false
Vue
.
config
.
productionTip
=
false
require
(
'babel-polyfill'
)
require
(
'babel-polyfill'
)
const
routerPush
=
Router
.
prototype
.
push
Router
.
prototype
.
push
=
function
push
(
location
)
{
return
routerPush
.
call
(
this
,
location
).
catch
(
error
=>
error
)
}
new
Vue
({
new
Vue
({
el
:
'#app'
,
el
:
'#app'
,
router
,
router
,
...
...
src/views/features/401.vue
View file @
d41b76a9
...
@@ -27,7 +27,6 @@
...
@@ -27,7 +27,6 @@
<
script
>
<
script
>
import
errGif
from
'@/assets/401_images/401.gif'
import
errGif
from
'@/assets/401_images/401.gif'
export
default
{
export
default
{
name
:
'Page401'
,
name
:
'Page401'
,
data
()
{
data
()
{
...
...
src/views/system/user/center.vue
View file @
d41b76a9
...
@@ -15,8 +15,7 @@
...
@@ -15,8 +15,7 @@
:headers=
"headers"
:headers=
"headers"
:action=
"updateAvatarApi"
:action=
"updateAvatarApi"
class=
"avatar-uploader"
>
class=
"avatar-uploader"
>
<img
v-if=
"user.avatar"
:src=
"user.avatar"
title=
"点击上传头像"
class=
"avatar"
>
<img
:src=
"user.avatar ? baseApi + '/avatar/' + user.avatar : Avatar"
title=
"点击上传头像"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-upload>
</div>
</div>
<ul
class=
"user-info"
>
<ul
class=
"user-info"
>
...
@@ -86,12 +85,14 @@ import { getToken } from '@/utils/auth'
...
@@ -86,12 +85,14 @@ import { getToken } from '@/utils/auth'
import
store
from
'@/store'
import
store
from
'@/store'
import
{
parseTime
}
from
'@/utils/index'
import
{
parseTime
}
from
'@/utils/index'
import
initData
from
'@/mixins/initData'
import
initData
from
'@/mixins/initData'
import
Avatar
from
'@/assets/avatar/avatar.png'
export
default
{
export
default
{
name
:
'Center'
,
name
:
'Center'
,
components
:
{
updatePass
,
updateEmail
},
components
:
{
updatePass
,
updateEmail
},
mixins
:
[
initData
],
mixins
:
[
initData
],
data
()
{
data
()
{
return
{
return
{
Avatar
:
Avatar
,
ico
:
'el-icon-refresh'
,
ico
:
'el-icon-refresh'
,
headers
:
{
headers
:
{
'Authorization'
:
'Bearer '
+
getToken
()
'Authorization'
:
'Bearer '
+
getToken
()
...
@@ -101,7 +102,8 @@ export default {
...
@@ -101,7 +102,8 @@ export default {
computed
:
{
computed
:
{
...
mapGetters
([
...
mapGetters
([
'user'
,
'user'
,
'updateAvatarApi'
'updateAvatarApi'
,
'baseApi'
])
])
},
},
created
()
{
created
()
{
...
...
src/views/tools/storage/index.vue
View file @
d41b76a9
<
template
>
<
template
>
<el-tabs
v-model=
"activeName"
style=
"padding-left: 8px;"
>
<el-tabs
v-model=
"activeName"
style=
"padding-left: 8px;"
@
tab-click=
"tabClick"
>
<el-tab-pane
label=
"本地存储"
name=
"first"
>
<el-tab-pane
label=
"本地存储"
name=
"first"
>
<Local/>
<Local
ref=
"local"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"七牛云存储"
name=
"second"
>
<el-tab-pane
label=
"七牛云存储"
name=
"second"
>
<QiNiu/>
<QiNiu
ref=
"qiNiu"
/>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</
template
>
</
template
>
<
script
>
<
script
>
import
QiNiu
from
'./qiniu/
list
'
import
QiNiu
from
'./qiniu/
index
'
import
Local
from
'./local/index'
import
Local
from
'./local/index'
import
'@/styles/description.scss'
import
'@/styles/description.scss'
export
default
{
export
default
{
...
@@ -20,6 +20,15 @@ export default {
...
@@ -20,6 +20,15 @@ export default {
return
{
return
{
activeName
:
'first'
activeName
:
'first'
}
}
},
methods
:
{
tabClick
(
name
)
{
if
(
this
.
activeName
===
'first'
)
{
this
.
$refs
.
local
.
init
()
}
else
{
this
.
$refs
.
qiNiu
.
init
()
}
}
}
}
}
}
</
script
>
</
script
>
...
...
src/views/tools/storage/local/form.vue
View file @
d41b76a9
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
:on-success=
"handleSuccess"
:on-success=
"handleSuccess"
:on-error=
"handleError"
:on-error=
"handleError"
:action=
"fileUploadApi + '?name=' + form.name"
>
:action=
"fileUploadApi + '?name=' + form.name"
>
<div
class=
"eladmin-upload"
><i
class=
"el-icon-upload"
/>
点击上传
</div>
<div
class=
"eladmin-upload"
><i
class=
"el-icon-upload"
/>
添加文件
</div>
<div
slot=
"tip"
class=
"el-upload__tip"
>
可上传任意格式文件,且不超过100M
</div>
<div
slot=
"tip"
class=
"el-upload__tip"
>
可上传任意格式文件,且不超过100M
</div>
</el-upload>
</el-upload>
</el-form-item>
</el-form-item>
...
...
src/views/tools/storage/local/index.vue
View file @
d41b76a9
...
@@ -15,18 +15,30 @@
...
@@ -15,18 +15,30 @@
icon=
"el-icon-upload"
icon=
"el-icon-upload"
@
click=
"add"
>
文件上传
</el-button>
@
click=
"add"
>
文件上传
</el-button>
</div>
</div>
<!-- 多选删除 -->
<div
style=
"display: inline-block;margin: 0px 2px;"
>
<el-button
:loading=
"delAllLoading"
:disabled=
"data.length === 0 || $refs.table.selection.length === 0"
class=
"filter-item"
size=
"mini"
type=
"danger"
icon=
"el-icon-delete"
@
click=
"open"
>
删除
</el-button>
</div>
</div>
</div>
<!--表单组件-->
<!--表单组件-->
<eForm
ref=
"form"
:is-add=
"isAdd"
/>
<eForm
ref=
"form"
:is-add=
"isAdd"
/>
<!--表格渲染-->
<!--表格渲染-->
<el-table
v-loading=
"loading"
:data=
"data"
size=
"small"
style=
"width: 100%;"
>
<el-table
v-loading=
"loading"
ref=
"table"
:data=
"data"
size=
"small"
style=
"width: 100%;"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"name"
label=
"文件名"
>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"name"
label=
"文件名"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-link
:href=
"baseApi + '/file/' + scope.row.type + '/' + scope.row.realName"
target=
"_blank"
type=
"primary"
>
{{
scope
.
row
.
name
}}
</el-link>
<el-link
:
underline=
"false"
:
href=
"baseApi + '/file/' + scope.row.type + '/' + scope.row.realName"
target=
"_blank"
type=
"primary"
>
{{
scope
.
row
.
name
}}
</el-link>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"suffix"
label=
"
后缀
"
/>
<el-table-column
prop=
"suffix"
label=
"
文件类型
"
/>
<el-table-column
prop=
"type"
label=
"类
型
"
/>
<el-table-column
prop=
"type"
label=
"类
别
"
/>
<el-table-column
prop=
"size"
label=
"大小"
/>
<el-table-column
prop=
"size"
label=
"大小"
/>
<el-table-column
prop=
"operate"
label=
"操作人"
/>
<el-table-column
prop=
"operate"
label=
"操作人"
/>
<el-table-column
prop=
"createTime"
label=
"创建日期"
>
<el-table-column
prop=
"createTime"
label=
"创建日期"
>
...
@@ -72,7 +84,7 @@
...
@@ -72,7 +84,7 @@
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
}
from
'vuex'
import
checkPermission
from
'@/utils/permission'
import
checkPermission
from
'@/utils/permission'
import
initData
from
'@/mixins/initData'
import
initData
from
'@/mixins/initData'
import
{
del
}
from
'@/api/localStorage'
import
{
del
,
delAll
}
from
'@/api/localStorage'
import
{
parseTime
}
from
'@/utils/index'
import
{
parseTime
}
from
'@/utils/index'
import
eForm
from
'./form'
import
eForm
from
'./form'
export
default
{
export
default
{
...
@@ -80,7 +92,7 @@ export default {
...
@@ -80,7 +92,7 @@ export default {
mixins
:
[
initData
],
mixins
:
[
initData
],
data
()
{
data
()
{
return
{
return
{
delLoading
:
false
,
delLoading
:
false
,
delAllLoading
:
false
,
queryTypeOptions
:
[
queryTypeOptions
:
[
{
key
:
'name'
,
display_name
:
'文件名'
},
{
key
:
'name'
,
display_name
:
'文件名'
},
{
key
:
'suffix'
,
display_name
:
'后缀'
},
{
key
:
'suffix'
,
display_name
:
'后缀'
},
...
@@ -141,6 +153,36 @@ export default {
...
@@ -141,6 +153,36 @@ export default {
name
:
data
.
name
name
:
data
.
name
}
}
_this
.
dialog
=
true
_this
.
dialog
=
true
},
doDelete
()
{
this
.
delAllLoading
=
true
const
data
=
this
.
$refs
.
table
.
selection
const
ids
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
ids
.
push
(
data
[
i
].
id
)
}
delAll
(
ids
).
then
(
res
=>
{
this
.
delAllLoading
=
false
this
.
dleChangePage
(
ids
.
length
)
this
.
init
()
this
.
$notify
({
title
:
'删除成功'
,
type
:
'success'
,
duration
:
2500
})
}).
catch
(
err
=>
{
this
.
delAllLoading
=
false
console
.
log
(
err
.
response
.
data
.
message
)
})
},
open
()
{
this
.
$confirm
(
'你确定删除选中的数据吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
doDelete
()
})
}
}
}
}
}
}
...
...
src/views/tools/storage/qiniu/
list
.vue
→
src/views/tools/storage/qiniu/
index
.vue
View file @
d41b76a9
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
class=
"filter-item"
class=
"filter-item"
size=
"mini"
size=
"mini"
type=
"success"
type=
"success"
icon=
"el-icon-
delete
"
icon=
"el-icon-
s-tools
"
@
click=
"doConfig"
>
七牛配置
</el-button>
@
click=
"doConfig"
>
七牛配置
</el-button>
</div>
</div>
<!-- 多选删除 -->
<!-- 多选删除 -->
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
:show-overflow-tooltip=
"true"
label=
"文件名"
>
<el-table-column
:show-overflow-tooltip=
"true"
label=
"文件名"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<
span>
{{
scope
.
row
.
key
}}
</span
>
<
a
href=
"JavaScript:;"
class=
"el-link el-link--primary"
target=
"_blank"
type=
"primary"
@
click=
"download(scope.row.id)"
>
{{
scope
.
row
.
key
}}
</a
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
:show-overflow-tooltip=
"true"
label=
"文件类型"
>
<el-table-column
:show-overflow-tooltip=
"true"
label=
"文件类型"
>
...
@@ -72,14 +72,8 @@
...
@@ -72,14 +72,8 @@
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
width=
"1
3
0px"
align=
"center"
fixed=
"right"
>
<el-table-column
label=
"操作"
width=
"1
0
0px"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
:loading=
"downloadLoading"
size=
"mini"
type=
"primary"
icon=
"el-icon-download"
@
click=
"download(scope.row.id)"
/>
<el-popover
<el-popover
:ref=
"scope.row.id"
:ref=
"scope.row.id"
placement=
"top"
placement=
"top"
...
@@ -140,11 +134,6 @@ export default {
...
@@ -140,11 +134,6 @@ export default {
}
}
}
}
},
},
created
()
{
this
.
$nextTick
(()
=>
{
this
.
init
()
})
},
methods
:
{
methods
:
{
parseTime
,
parseTime
,
beforeInit
()
{
beforeInit
()
{
...
...
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