Commit d41b76a9 by dqjdda

完成了本地存储功能,用户头像存储方式改为本地,其他细节优化

parent 9fad80b1
......@@ -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) {
return request({
url: 'api/localStorage',
......
......@@ -11,7 +11,7 @@
</template>
<el-dropdown class="avatar-container right-menu-item" trigger="click">
<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"/>
</div>
<el-dropdown-menu slot="dropdown">
......@@ -46,7 +46,7 @@ import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull'
import Avatar from '@/assets/avatar/avatar.png'
export default {
components: {
Breadcrumb,
......@@ -55,6 +55,7 @@ export default {
},
data() {
return {
Avatar: Avatar,
dialogVisible: false
}
},
......@@ -62,7 +63,8 @@ export default {
...mapGetters([
'sidebar',
'user',
'device'
'device',
'baseApi'
]),
show: {
get() {
......
......@@ -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 mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
import '@/styles/index.scss' // global css
import App from './App'
......@@ -16,6 +15,7 @@ import store from './store'
import '@/icons' // icon
import './router/index' // permission control
import Router from 'vue-router'
Vue.use(mavonEditor)
Vue.use(permission)
......@@ -23,6 +23,11 @@ Vue.use(ElementUI, { locale })
Vue.config.productionTip = false
require('babel-polyfill')
const routerPush = Router.prototype.push
Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(error => error)
}
new Vue({
el: '#app',
router,
......
......@@ -27,7 +27,6 @@
<script>
import errGif from '@/assets/401_images/401.gif'
export default {
name: 'Page401',
data() {
......
......@@ -15,8 +15,7 @@
:headers="headers"
:action="updateAvatarApi"
class="avatar-uploader">
<img v-if="user.avatar" :src="user.avatar" title="点击上传头像" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"/>
<img :src="user.avatar ? baseApi + '/avatar/' + user.avatar : Avatar" title="点击上传头像" class="avatar">
</el-upload>
</div>
<ul class="user-info">
......@@ -86,12 +85,14 @@ import { getToken } from '@/utils/auth'
import store from '@/store'
import { parseTime } from '@/utils/index'
import initData from '@/mixins/initData'
import Avatar from '@/assets/avatar/avatar.png'
export default {
name: 'Center',
components: { updatePass, updateEmail },
mixins: [initData],
data() {
return {
Avatar: Avatar,
ico: 'el-icon-refresh',
headers: {
'Authorization': 'Bearer ' + getToken()
......@@ -101,7 +102,8 @@ export default {
computed: {
...mapGetters([
'user',
'updateAvatarApi'
'updateAvatarApi',
'baseApi'
])
},
created() {
......
<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">
<Local/>
<Local ref="local"/>
</el-tab-pane>
<el-tab-pane label="七牛云存储" name="second">
<QiNiu/>
<QiNiu ref="qiNiu"/>
</el-tab-pane>
</el-tabs>
</template>
<script>
import QiNiu from './qiniu/list'
import QiNiu from './qiniu/index'
import Local from './local/index'
import '@/styles/description.scss'
export default {
......@@ -20,6 +20,15 @@ export default {
return {
activeName: 'first'
}
},
methods: {
tabClick(name) {
if (this.activeName === 'first') {
this.$refs.local.init()
} else {
this.$refs.qiNiu.init()
}
}
}
}
</script>
......
......@@ -15,7 +15,7 @@
:on-success="handleSuccess"
:on-error="handleError"
: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>
</el-upload>
</el-form-item>
......
......@@ -15,18 +15,30 @@
icon="el-icon-upload"
@click="add">文件上传</el-button>
</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>
<!--表单组件-->
<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="文件名">
<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>
</el-table-column>
<el-table-column prop="suffix" label="后缀"/>
<el-table-column prop="type" label="类"/>
<el-table-column prop="suffix" label="文件类型"/>
<el-table-column prop="type" label="类"/>
<el-table-column prop="size" label="大小"/>
<el-table-column prop="operate" label="操作人"/>
<el-table-column prop="createTime" label="创建日期">
......@@ -72,7 +84,7 @@
import { mapGetters } from 'vuex'
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del } from '@/api/localStorage'
import { del, delAll } from '@/api/localStorage'
import { parseTime } from '@/utils/index'
import eForm from './form'
export default {
......@@ -80,7 +92,7 @@ export default {
mixins: [initData],
data() {
return {
delLoading: false,
delLoading: false, delAllLoading: false,
queryTypeOptions: [
{ key: 'name', display_name: '文件名' },
{ key: 'suffix', display_name: '后缀' },
......@@ -141,6 +153,36 @@ export default {
name: data.name
}
_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()
})
}
}
}
......
......@@ -19,7 +19,7 @@
class="filter-item"
size="mini"
type="success"
icon="el-icon-delete"
icon="el-icon-s-tools"
@click="doConfig">七牛配置</el-button>
</div>
<!-- 多选删除 -->
......@@ -56,7 +56,7 @@
<el-table-column type="selection" width="55"/>
<el-table-column :show-overflow-tooltip="true" label="文件名">
<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>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" label="文件类型">
......@@ -72,14 +72,8 @@
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="130px" align="center" fixed="right">
<el-table-column label="操作" width="100px" align="center" fixed="right">
<template slot-scope="scope">
<el-button
:loading="downloadLoading"
size="mini"
type="primary"
icon="el-icon-download"
@click="download(scope.row.id)"/>
<el-popover
:ref="scope.row.id"
placement="top"
......@@ -140,11 +134,6 @@ export default {
}
}
},
created() {
this.$nextTick(() => {
this.init()
})
},
methods: {
parseTime,
beforeInit() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment