Commit d41b76a9 by dqjdda

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

parent 9fad80b1
...@@ -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',
......
...@@ -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() {
......
...@@ -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,
......
...@@ -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() {
......
...@@ -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() {
......
<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>
......
...@@ -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>
......
...@@ -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()
})
} }
} }
} }
......
...@@ -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="130px" align="center" fixed="right"> <el-table-column label="操作" width="100px" 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() {
......
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