Commit 98fa128e by zhengjie

v1.9 发布,详情查看发行版说明

parent f0255b5e
{ {
"name": "eladmin", "name": "eladmin",
"version": "1.8.0", "version": "1.9.0",
"license": "Apache-2.0", "license": "Apache-2.0",
"description": "eladmin 前端代码", "description": "eladmin 前端代码",
"author": "jie <elunez@qq.com>", "author": "jie <elunez@qq.com>",
......
...@@ -6,3 +6,11 @@ export function del(id) { ...@@ -6,3 +6,11 @@ export function del(id) {
method: 'delete' method: 'delete'
}) })
} }
export function delAll(ids) {
return request({
url: 'api/pictures/',
method: 'delete',
data: ids
})
}
...@@ -35,3 +35,11 @@ export function sync() { ...@@ -35,3 +35,11 @@ export function sync() {
method: 'post' method: 'post'
}) })
} }
export function delAll(ids) {
return request({
url: 'api/qiNiuContent/',
method: 'delete',
data: ids
})
}
...@@ -23,6 +23,13 @@ export function get(id) { ...@@ -23,6 +23,13 @@ export function get(id) {
}) })
} }
export function getLevel() {
return request({
url: 'api/roles/level',
method: 'get'
})
}
export function del(id) { export function del(id) {
return request({ return request({
url: 'api/roles/' + id, url: 'api/roles/' + id,
......
import permission from './permission'
const install = function(Vue) {
Vue.directive('permission', permission)
}
if (window.Vue) {
window['permission'] = permission
Vue.use(install); // eslint-disable-line
}
permission.install = install
export default permission
import store from '@/store'
export default {
inserted(el, binding, vnode) {
const { value } = binding
const roles = store.getters && store.getters.roles
if (value && value instanceof Array && value.length > 0) {
const permissionRoles = value
const hasPermission = roles.some(role => {
return permissionRoles.includes(role)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
} else {
throw new Error(`need roles! Like v-permission="['admin','editor']"`)
}
}
}
...@@ -11,12 +11,14 @@ import '@/styles/index.scss' // global css ...@@ -11,12 +11,14 @@ import '@/styles/index.scss' // global css
import App from './App' import App from './App'
import router from './router/routers' import router from './router/routers'
import permission from './components/permission'
import store from './store' import store from './store'
import '@/icons' // icon import '@/icons' // icon
import './router/index' // permission control import './router/index' // permission control
Vue.use(mavonEditor) Vue.use(mavonEditor)
Vue.use(permission)
Vue.use(ElementUI, { locale }) Vue.use(ElementUI, { locale })
Vue.config.productionTip = false Vue.config.productionTip = false
require('babel-polyfill') require('babel-polyfill')
......
...@@ -106,10 +106,10 @@ export default { ...@@ -106,10 +106,10 @@ export default {
} }
}, },
legend: { legend: {
data: ['visits', 'ip'] data: ['pv', 'ip']
}, },
series: [{ series: [{
name: 'visits', itemStyle: { name: 'pv', itemStyle: {
normal: { normal: {
color: '#FF005A', color: '#FF005A',
lineStyle: { lineStyle: {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<svg-icon icon-class="visits" class-name="card-panel-icon" /> <svg-icon icon-class="visits" class-name="card-panel-icon" />
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">New Visits</div> <div class="card-panel-text">Daily Pv</div>
<count-to :start-val="0" :end-val="count.newVisits" :duration="2600" class="card-panel-num"/> <count-to :start-val="0" :end-val="count.newVisits" :duration="2600" class="card-panel-num"/>
</div> </div>
</div> </div>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<svg-icon icon-class="ipvisits" class-name="card-panel-icon" /> <svg-icon icon-class="ipvisits" class-name="card-panel-icon" />
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">New Ip</div> <div class="card-panel-text">Daily Ip</div>
<count-to :start-val="0" :end-val="count.newIp" :duration="3000" class="card-panel-num"/> <count-to :start-val="0" :end-val="count.newIp" :duration="3000" class="card-panel-num"/>
</div> </div>
</div> </div>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<svg-icon icon-class="visits" class-name="card-panel-icon" /> <svg-icon icon-class="visits" class-name="card-panel-icon" />
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">Recent Visits</div> <div class="card-panel-text">Weekly Pv</div>
<count-to :start-val="0" :end-val="count.recentVisits" :duration="3200" class="card-panel-num"/> <count-to :start-val="0" :end-val="count.recentVisits" :duration="3200" class="card-panel-num"/>
</div> </div>
</div> </div>
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<svg-icon icon-class="ipvisits" class-name="card-panel-icon" /> <svg-icon icon-class="ipvisits" class-name="card-panel-icon" />
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text">Recent Ip</div> <div class="card-panel-text">Weekly Ip</div>
<count-to :start-val="0" :end-val="count.recentIp" :duration="3600" class="card-panel-num"/> <count-to :start-val="0" :end-val="count.recentIp" :duration="3600" class="card-panel-num"/>
</div> </div>
</div> </div>
......
<template> <template>
<div> <div>
<el-button v-if="checkPermission(['ADMIN','JOB_ALL','JOB_EDIT'])" type="success" size="mini" @click="to">生成代码</el-button> <el-button type="primary" size="mini" @click="to">生成代码</el-button>
<el-dialog :visible.sync="dialog" title="代码生成配置" append-to-body width="800px"> <el-dialog :visible.sync="dialog" title="代码生成配置" append-to-body width="800px">
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;"> <el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
<el-table-column label="序号" width="80" align="center"> <el-table-column label="序号" width="80" align="center">
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData' import initData from '@/mixins/initData'
import { generator } from '@/api/generator' import { generator } from '@/api/generator'
export default { export default {
...@@ -67,7 +66,6 @@ export default { ...@@ -67,7 +66,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
to() { to() {
this.dialog = true this.dialog = true
this.time = 130 this.time = 130
......
<template> <template>
<div class="head-container"> <div class="head-container">
<el-input v-model="query.name" clearable placeholder="请输入表名" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.name" clearable placeholder="请输入表名" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="warning"
icon="el-icon-setting" icon="el-icon-setting"
@click="to">生成器配置</el-button> @click="to">生成器配置</el-button>
<eForm ref="form"/> <eForm ref="form"/>
......
...@@ -42,7 +42,7 @@ export default { ...@@ -42,7 +42,7 @@ export default {
} }
.fixed-header+.app-main { .fixed-header+.app-main {
padding-top: 84px; padding-top: 85px;
} }
} }
</style> </style>
......
...@@ -30,9 +30,11 @@ ...@@ -30,9 +30,11 @@
个人中心 个人中心
</el-dropdown-item> </el-dropdown-item>
</router-link> </router-link>
<span style="display:block;" @click="open">
<el-dropdown-item divided> <el-dropdown-item divided>
<span style="display:block;" @click="logout">退出登录</span> 退出登录
</el-dropdown-item> </el-dropdown-item>
</span>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
...@@ -51,6 +53,11 @@ export default { ...@@ -51,6 +53,11 @@ export default {
Hamburger, Hamburger,
Screenfull Screenfull
}, },
data() {
return {
dialogVisible: false
}
},
computed: { computed: {
...mapGetters([ ...mapGetters([
'sidebar', 'sidebar',
...@@ -70,10 +77,20 @@ export default { ...@@ -70,10 +77,20 @@ export default {
} }
}, },
methods: { methods: {
open() {
this.$confirm('确定注销并退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.logout()
})
},
toggleSideBar() { toggleSideBar() {
this.$store.dispatch('ToggleSideBar') this.$store.dispatch('ToggleSideBar')
}, },
logout() { logout() {
this.dialogVisible = false
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
location.reload() // 为了重新实例化vue-router对象 避免bug location.reload() // 为了重新实例化vue-router对象 避免bug
}) })
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="异常详情" width="120px"> <el-table-column prop="createTime" label="异常详情" width="100px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="info(scope.row.exceptionDetail)">查看详情</el-button> <el-button size="mini" type="text" @click="info(scope.row.exceptionDetail)">查看详情</el-button>
</template> </template>
......
<template> <template>
<div class="head-container"> <div class="head-container">
<el-input v-model="query.username" clearable placeholder="用户名" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.username" clearable placeholder="用户名" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
</div> </div>
</template> </template>
......
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','REDIS_ALL','REDIS_EDIT','REDIS_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','REDIS_ALL','REDIS_EDIT'])" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','REDIS_ALL','REDIS_EDIT']" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','REDIS_ALL','REDIS_DELETE'])" v-permission="['ADMIN','REDIS_ALL','REDIS_DELETE']"
:ref="scope.$index" :ref="scope.$index"
placement="top" placement="top"
width="180"> width="180">
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<el-button size="mini" type="text" @click="$refs[scope.$index].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.$index].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.$index, scope.row)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.$index, scope.row)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false"/> <eForm ref="form" :sup_this="sup_this" :is-add="false"/>
</div> </div>
</template> </template>
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入关键词搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入关键词搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','REDIS_ALL','REDIS_CREATE'])" v-permission="['ADMIN','REDIS_ALL','REDIS_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -15,12 +15,11 @@ ...@@ -15,12 +15,11 @@
<eForm ref="form" :is-add="true"/> <eForm ref="form" :is-add="true"/>
</div> </div>
<!-- 清空缓存 --> <!-- 清空缓存 -->
<el-button v-if="checkPermission(['ADMIN','REDIS_ALL','REDIS_DELETE'])" :loading="deleteAllLoading" type="warning" size="mini" class="filter-item" icon="el-icon-delete" @click="deleteAll">清空缓存</el-button> <el-button v-permission="['ADMIN','REDIS_ALL','REDIS_DELETE']" :loading="deleteAllLoading" type="warning" size="mini" class="filter-item" icon="el-icon-delete" @click="deleteAll">清空缓存</el-button>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import eForm from './form' import eForm from './form'
import { delAll } from '@/api/redis' import { delAll } from '@/api/redis'
// 查询条件 // 查询条件
...@@ -38,7 +37,6 @@ export default { ...@@ -38,7 +37,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<eHeader :query="query" :dicts="dicts"/> <eHeader :query="query" :dicts="dicts"/>
<!--表格渲染--> <!--表格渲染-->
<tree-table v-loading="loading" :expand-all="true" :data="data" :columns="columns" size="small"> <tree-table v-loading="loading" :expand-all="expand" :data="data" :columns="columns" size="small">
<el-table-column label="状态" align="center"> <el-table-column label="状态" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-for="item in dicts" :key="item.id"> <div v-for="item in dicts" :key="item.id">
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','DEPT_ALL','DEPT_EDIT','DEPT_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','DEPT_ALL','DEPT_EDIT'])" :dicts="dicts" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','DEPT_ALL','DEPT_EDIT']" :dicts="dicts" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','DEPT_ALL','DEPT_DELETE'])" v-permission="['ADMIN','DEPT_ALL','DEPT_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" :disabled="scope.row.id === 1" type="danger" size="mini">删除</el-button> <el-button slot="reference" :disabled="scope.row.id === 1" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
...@@ -56,7 +56,7 @@ export default { ...@@ -56,7 +56,7 @@ export default {
value: 'name' value: 'name'
} }
], ],
delLoading: false, sup_this: this delLoading: false, sup_this: this, expand: true
} }
}, },
created() { created() {
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false" :dicts="dicts"/> <eForm ref="form" :sup_this="sup_this" :is-add="false" :dicts="dicts"/>
</div> </div>
</template> </template>
......
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
<el-select v-model="query.enabled" clearable placeholder="状态" class="filter-item" style="width: 90px" @change="toQuery"> <el-select v-model="query.enabled" clearable placeholder="状态" class="filter-item" style="width: 90px" @change="toQuery">
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/> <el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select> </el-select>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','DEPT_ALL','DEPT_CREATE'])" v-permission="['ADMIN','DEPT_ALL','DEPT_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -17,11 +17,19 @@ ...@@ -17,11 +17,19 @@
@click="add">新增</el-button> @click="add">新增</el-button>
<eForm ref="form" :is-add="true" :dicts="dicts"/> <eForm ref="form" :is-add="true" :dicts="dicts"/>
</div> </div>
<div style="display: inline-block;margin: 0px 2px;">
<el-button
class="filter-item"
size="mini"
type="warning"
icon="el-icon-more"
@click="expand">展开/折叠</el-button>
<eForm ref="form" :is-add="true"/>
</div>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import eForm from './form' import eForm from './form'
export default { export default {
components: { eForm }, components: { eForm },
...@@ -44,7 +52,6 @@ export default { ...@@ -44,7 +52,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
...@@ -52,6 +59,10 @@ export default { ...@@ -52,6 +59,10 @@ export default {
add() { add() {
this.$refs.form.getDepts() this.$refs.form.getDepts()
this.$refs.form.dialog = true this.$refs.form.dialog = true
},
expand() {
this.$parent.expand = !this.$parent.expand
this.$parent.init()
} }
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>字典列表</span> <span>字典列表</span>
<el-button <el-button
v-if="checkPermission(['ADMIN','DICT_ALL','DICT_CREATE'])" v-permission="['ADMIN','DICT_ALL','DICT_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
style="float: right;padding: 4px 10px" style="float: right;padding: 4px 10px"
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
<el-table v-loading="loading" :data="data" size="small" highlight-current-row style="width: 100%;" @current-change="handleCurrentChange"> <el-table v-loading="loading" :data="data" size="small" highlight-current-row style="width: 100%;" @current-change="handleCurrentChange">
<el-table-column :show-overflow-tooltip="true" prop="name" label="名称"/> <el-table-column :show-overflow-tooltip="true" prop="name" label="名称"/>
<el-table-column :show-overflow-tooltip="true" prop="remark" label="描述"/> <el-table-column :show-overflow-tooltip="true" prop="remark" label="描述"/>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','DICT_ALL','DICT_EDIT','DICT_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','DICT_ALL','DICT_EDIT'])" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','DICT_ALL','DICT_EDIT']" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','DICT_ALL','DICT_DELETE'])" v-permission="['ADMIN','DICT_ALL','DICT_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
...@@ -49,11 +49,7 @@ ...@@ -49,11 +49,7 @@
<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14"> <el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14">
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>字典详情 <span>字典详情</span>
<span style="color: #317EF3">
{{ this.$refs.dictDetail ? this.$refs.dictDetail.dictName : '' }}
</span>
</span>
<el-button <el-button
v-if="checkPermission(['ADMIN','DICT_ALL','DICT_CREATE']) && this.$refs.dictDetail && this.$refs.dictDetail.dictName" v-if="checkPermission(['ADMIN','DICT_ALL','DICT_CREATE']) && this.$refs.dictDetail && this.$refs.dictDetail.dictName"
class="filter-item" class="filter-item"
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false"/> <eForm ref="form" :sup_this="sup_this" :is-add="false"/>
</div> </div>
</template> </template>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px"> <el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px">
<el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/> <el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select> </el-select>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<eForm ref="form" :is-add="true" :sup_this="sup_this"/> <eForm ref="form" :is-add="true" :sup_this="sup_this"/>
</div> </div>
......
...@@ -7,14 +7,19 @@ ...@@ -7,14 +7,19 @@
<eHeader ref="header" :query="query" :dict-id="dictId"/> <eHeader ref="header" :query="query" :dict-id="dictId"/>
<!--表格渲染--> <!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;"> <el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
<el-table-column label="所属字典">
<template slot-scope="scope">
{{ dictName }}
</template>
</el-table-column>
<el-table-column prop="label" label="字典标签"/> <el-table-column prop="label" label="字典标签"/>
<el-table-column prop="value" label="字典值"/> <el-table-column prop="value" label="字典值"/>
<el-table-column prop="sort" label="排序"/> <el-table-column prop="sort" label="排序"/>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','DICT_ALL','DICT_EDIT','DICT_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','DICT_ALL','DICT_EDIT'])" :dict-id="dictId" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','DICT_ALL','DICT_EDIT']" :dict-id="dictId" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','DICT_ALL','DICT_DELETE'])" v-permission="['ADMIN','DICT_ALL','DICT_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -23,7 +28,7 @@ ...@@ -23,7 +28,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false" :dict-id="dictId"/> <eForm ref="form" :sup_this="sup_this" :is-add="false" :dict-id="dictId"/>
</div> </div>
</template> </template>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入字典标签查询" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入字典标签查询" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<eForm ref="form" :is-add="true" :dict-id="dictId"/> <eForm ref="form" :is-add="true" :dict-id="dictId"/>
</div> </div>
......
...@@ -26,11 +26,11 @@ ...@@ -26,11 +26,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','USERJOB_ALL','USERJOB_EDIT','USERJOB_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','USERJOB_ALL','USERJOB_EDIT'])" :dicts="dicts" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','USERJOB_ALL','USERJOB_EDIT']" :dicts="dicts" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','USERJOB_ALL','USERJOB_DELETE'])" v-permission="['ADMIN','USERJOB_ALL','USERJOB_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false" :dicts="dicts"/> <eForm ref="form" :sup_this="sup_this" :is-add="false" :dicts="dicts"/>
</div> </div>
</template> </template>
......
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
<el-select v-model="query.enabled" clearable placeholder="状态" class="filter-item" style="width: 90px" @change="toQuery"> <el-select v-model="query.enabled" clearable placeholder="状态" class="filter-item" style="width: 90px" @change="toQuery">
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/> <el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select> </el-select>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','USERJOB_ALL','USERJOB_CREATE'])" v-permission="['ADMIN','USERJOB_ALL','USERJOB_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import eForm from './form' import eForm from './form'
export default { export default {
components: { eForm }, components: { eForm },
...@@ -44,7 +43,6 @@ export default { ...@@ -44,7 +43,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
add() { add() {
this.$refs.form.getDepts() this.$refs.form.getDepts()
this.$refs.form.dialog = true this.$refs.form.dialog = true
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<eHeader :query="query"/> <eHeader :query="query"/>
<!--表格渲染--> <!--表格渲染-->
<tree-table v-loading="loading" :data="data" :expand-all="true" :columns="columns" size="small"> <tree-table v-loading="loading" :data="data" :expand-all="expand" :columns="columns" size="small">
<el-table-column prop="icon" label="图标" align="center" width="80px"> <el-table-column prop="icon" label="图标" align="center" width="80px">
<template slot-scope="scope"> <template slot-scope="scope">
<svg-icon :icon-class="scope.row.icon" /> <svg-icon :icon-class="scope.row.icon" />
...@@ -26,11 +26,11 @@ ...@@ -26,11 +26,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','MENU_ALL','MENU_EDIT','MENU_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','MENU_ALL','MENU_EDIT'])" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','MENU_ALL','MENU_EDIT']" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','MENU_ALL','MENU_DELETE'])" v-permission="['ADMIN','MENU_ALL','MENU_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="200"> width="200">
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
value: 'name' value: 'name'
} }
], ],
delLoading: false, sup_this: this delLoading: false, sup_this: this, expand: true
} }
}, },
created() { created() {
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false"/> <eForm ref="form" :sup_this="sup_this" :is-add="false"/>
</div> </div>
</template> </template>
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','MENU_ALL','MENU_CREATE'])" v-permission="['ADMIN','MENU_ALL','MENU_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -14,11 +14,19 @@ ...@@ -14,11 +14,19 @@
@click="add">新增</el-button> @click="add">新增</el-button>
<eForm ref="form" :is-add="true"/> <eForm ref="form" :is-add="true"/>
</div> </div>
<div style="display: inline-block;margin: 0px 2px;">
<el-button
class="filter-item"
size="mini"
type="warning"
icon="el-icon-more"
@click="expand">展开/折叠</el-button>
<eForm ref="form" :is-add="true"/>
</div>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission'
import eForm from './form' import eForm from './form'
export default { export default {
components: { eForm }, components: { eForm },
...@@ -34,7 +42,6 @@ export default { ...@@ -34,7 +42,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
...@@ -42,6 +49,10 @@ export default { ...@@ -42,6 +49,10 @@ export default {
add() { add() {
this.$refs.form.getMenus() this.$refs.form.getMenus()
this.$refs.form.dialog = true this.$refs.form.dialog = true
},
expand() {
this.$parent.expand = !this.$parent.expand
this.$parent.init()
} }
} }
} }
......
...@@ -2,17 +2,17 @@ ...@@ -2,17 +2,17 @@
<div class="app-container"> <div class="app-container">
<eHeader :query="query"/> <eHeader :query="query"/>
<!--表格渲染--> <!--表格渲染-->
<tree-table v-loading="loading" :data="data" :expand-all="true" :columns="columns" size="small"> <tree-table v-loading="loading" :data="data" :expand-all="expand" :columns="columns" size="small">
<el-table-column prop="createTime" label="创建日期"> <el-table-column prop="createTime" label="创建日期">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','PERMISSION_ALL','PERMISSION_EDIT','PERMISSION_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','PERMISSION_ALL','PERMISSION_EDIT'])" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','PERMISSION_ALL','PERMISSION_EDIT']" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','PERMISSION_ALL','PERMISSION_DELETE'])" v-permission="['ADMIN','PERMISSION_ALL','PERMISSION_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="200"> width="200">
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
...@@ -52,7 +52,7 @@ export default { ...@@ -52,7 +52,7 @@ export default {
value: 'alias' value: 'alias'
} }
], ],
delLoading: false, sup_this: this delLoading: false, sup_this: this, expand: true
} }
}, },
created() { created() {
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false"/> <eForm ref="form" :sup_this="sup_this" :is-add="false"/>
</div> </div>
</template> </template>
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','PERMISSION_ALL','PERMISSION_CREATE'])" v-permission="['ADMIN','PERMISSION_ALL','PERMISSION_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -14,11 +14,19 @@ ...@@ -14,11 +14,19 @@
@click="add">新增</el-button> @click="add">新增</el-button>
<eForm ref="form" :is-add="true"/> <eForm ref="form" :is-add="true"/>
</div> </div>
<div style="display: inline-block;margin: 0px 2px;">
<el-button
class="filter-item"
size="mini"
type="warning"
icon="el-icon-more"
@click="expand">展开/折叠</el-button>
<eForm ref="form" :is-add="true"/>
</div>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission'
import eForm from './form' import eForm from './form'
export default { export default {
components: { eForm }, components: { eForm },
...@@ -34,7 +42,6 @@ export default { ...@@ -34,7 +42,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
...@@ -42,6 +49,10 @@ export default { ...@@ -42,6 +49,10 @@ export default {
add() { add() {
this.$refs.form.getPermissions() this.$refs.form.getPermissions()
this.$refs.form.dialog = true this.$refs.form.dialog = true
},
expand() {
this.$parent.expand = !this.$parent.expand
this.$parent.init()
} }
} }
} }
......
<template> <template>
<div class="app-container"> <div class="app-container">
<eHeader :query="query"/> <eHeader :query="query"/>
<!--表格渲染--> <el-row :gutter="15">
<div :style="'height: auto;max-height:' + height + 'overflow-y: auto;'"> <!--角色管理-->
<el-col :xs="24" :sm="24" :md="16" :lg="16" :xl="17">
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">角色列表</span>
<div id="opt" style="float: right">
<el-radio-group v-model="opt" size="mini">
<el-radio-button label="菜单分配"/>
<el-radio-button label="权限分配"/>
</el-radio-group>
</div>
</div>
<el-table v-loading="loading" :data="data" highlight-current-row size="small" style="width: 100%;" @current-change="handleCurrentChange"> <el-table v-loading="loading" :data="data" highlight-current-row size="small" style="width: 100%;" @current-change="handleCurrentChange">
<el-table-column prop="name" label="名称"/> <el-table-column prop="name" label="名称"/>
<el-table-column prop="dataScope" label="数据权限"/> <el-table-column prop="dataScope" label="数据权限"/>
<el-table-column prop="remark" label="描述"/> <el-table-column prop="level" label="角色级别"/>
<el-table-column prop="createTime" label="创建日期"> <el-table-column :show-overflow-tooltip="true" prop="remark" label="描述"/>
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建日期">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','ROLES_ALL','ROLES_EDIT','ROLES_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','ROLES_ALL','ROLES_EDIT'])" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','ROLES_ALL','ROLES_EDIT']" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','ROLES_ALL','ROLES_DELETE'])" v-permission="['ADMIN','ROLES_ALL','ROLES_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -25,12 +37,11 @@ ...@@ -25,12 +37,11 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
<!--分页组件--> <!--分页组件-->
<el-pagination <el-pagination
:total="total" :total="total"
...@@ -38,56 +49,57 @@ ...@@ -38,56 +49,57 @@
layout="total, prev, pager, next, sizes" layout="total, prev, pager, next, sizes"
@size-change="sizeChange" @size-change="sizeChange"
@current-change="pageChange"/> @current-change="pageChange"/>
<!--这里是授权模块代码--> </el-card>
<el-row :gutter="20" style="margin-top: 5px;"> </el-col>
<!--权限分配--> <!-- 授权 -->
<el-col :span="12"> <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="7">
<el-card class="box-card" shadow="never"> <el-card v-show="opt === '菜单分配'" class="box-card" shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="role-span">权限分配</span> <el-tooltip class="item" effect="dark" content="选择指定角色分配菜单" placement="top">
<span class="role-span">菜单分配</span>
</el-tooltip>
<el-button <el-button
v-if="showButton && checkPermission(['ADMIN','ROLES_ALL','ROLES_EDIT'])" v-permission="['ADMIN','ROLES_ALL','ROLES_EDIT']"
:loading="permissionLoading" :disabled="!showButton"
:loading="menuLoading"
icon="el-icon-check" icon="el-icon-check"
size="mini" size="mini"
style="float: right; padding: 4px 10px" style="float: right; padding: 6px 9px"
type="info" type="primary"
@click="savePermission">保存</el-button> @click="saveMenu">保存</el-button>
</div> </div>
<div style="min-height: 320px;max-height:500px;overflow-y: auto;">
<el-tree <el-tree
ref="permission" ref="menu"
:data="permissions" :data="menus"
:default-checked-keys="permissionIds" :default-checked-keys="menuIds"
:props="defaultProps" :props="defaultProps"
accordion
show-checkbox show-checkbox
node-key="id"/> node-key="id"/>
</div>
</el-card> </el-card>
</el-col> <el-card v-show="opt === '权限分配'" class="box-card" shadow="never">
<!--菜单分配-->
<el-col :span="12">
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="role-span">菜单分配</span> <el-tooltip class="item" effect="dark" content="选择指定角色分配权限" placement="top">
<span class="role-span">权限分配</span>
</el-tooltip>
<el-button <el-button
v-if="showButton && checkPermission(['ADMIN','ROLES_ALL','ROLES_EDIT'])" v-permission="['ADMIN','ROLES_ALL','ROLES_EDIT']"
:loading="menuLoading" :disabled="!showButton"
:loading="permissionLoading"
icon="el-icon-check" icon="el-icon-check"
size="mini" size="mini"
style="float: right; padding: 4px 10px" style="float: right; padding: 6px 9px"
type="info" type="primary"
@click="saveMenu">保存</el-button> @click="savePermission">保存</el-button>
</div> </div>
<div style="min-height: 320px;max-height:500px;overflow-y: auto;">
<el-tree <el-tree
ref="menu" ref="permission"
:data="menus" :data="permissions"
:default-checked-keys="menuIds" :default-checked-keys="permissionIds"
:props="defaultProps" :props="defaultProps"
show-checkbox show-checkbox
accordion
node-key="id"/> node-key="id"/>
</div>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
...@@ -113,9 +125,8 @@ export default { ...@@ -113,9 +125,8 @@ export default {
children: 'children', children: 'children',
label: 'label' label: 'label'
}, },
currentId: 0, permissionLoading: false, menuLoading: false, showButton: false, currentId: 0, permissionLoading: false, menuLoading: false, showButton: false, opt: '菜单分配',
delLoading: false, sup_this: this, permissions: [], permissionIds: [], menus: [], menuIds: [], delLoading: false, sup_this: this, permissions: [], permissionIds: [], menus: [], menuIds: []
height: document.documentElement.clientHeight - 94.5 - 260 + 'px;'
} }
}, },
created() { created() {
...@@ -125,12 +136,6 @@ export default { ...@@ -125,12 +136,6 @@ export default {
this.init() this.init()
}) })
}, },
mounted: function() {
const that = this
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 94.5 - 260 + 'px;'
}
},
methods: { methods: {
parseTime, parseTime,
checkPermission, checkPermission,
...@@ -139,7 +144,7 @@ export default { ...@@ -139,7 +144,7 @@ export default {
this.$refs.menu.setCheckedKeys([]) this.$refs.menu.setCheckedKeys([])
this.showButton = false this.showButton = false
this.url = 'api/roles' this.url = 'api/roles'
const sort = 'id,desc' const sort = 'level,asc'
const query = this.query const query = this.query
const value = query.value const value = query.value
this.params = { page: this.page, size: this.size, sort: sort } this.params = { page: this.page, size: this.size, sort: sort }
...@@ -266,7 +271,7 @@ export default { ...@@ -266,7 +271,7 @@ export default {
} }
</script> </script>
<style scoped> <style rel="stylesheet/scss" lang="scss">
.role-span { .role-span {
font-weight: bold;color: #303133; font-weight: bold;color: #303133;
font-size: 15px; font-size: 15px;
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false"/> <eForm ref="form" :sup_this="sup_this" :is-add="false"/>
</div> </div>
</template> </template>
...@@ -22,7 +22,7 @@ export default { ...@@ -22,7 +22,7 @@ export default {
to() { to() {
const _this = this.$refs.form const _this = this.$refs.form
_this.deptIds = [] _this.deptIds = []
_this.form = { id: this.data.id, name: this.data.name, remark: this.data.remark, depts: this.data.depts, dataScope: this.data.dataScope } _this.form = { id: this.data.id, name: this.data.name, remark: this.data.remark, depts: this.data.depts, dataScope: this.data.dataScope, level: this.data.level }
if (_this.form.dataScope === '自定义') { if (_this.form.dataScope === '自定义') {
_this.getDepts() _this.getDepts()
} }
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
<el-form-item label="角色名称" prop="name"> <el-form-item label="角色名称" prop="name">
<el-input v-model="form.name" style="width: 370px;"/> <el-input v-model="form.name" style="width: 370px;"/>
</el-form-item> </el-form-item>
<el-form-item label="角色级别" prop="sort">
<el-input-number v-model.number="form.level" :min="1" controls-position="right" style="width: 370px;"/>
</el-form-item>
<el-form-item label="数据范围"> <el-form-item label="数据范围">
<el-select v-model="form.dataScope" style="width: 370px" placeholder="请选择数据范围" @change="changeScope"> <el-select v-model="form.dataScope" style="width: 370px" placeholder="请选择数据范围" @change="changeScope">
<el-option <el-option
...@@ -48,7 +51,7 @@ export default { ...@@ -48,7 +51,7 @@ export default {
return { return {
dateScopes: ['全部', '本级', '自定义'], dateScopes: ['全部', '本级', '自定义'],
loading: false, dialog: false, depts: [], deptIds: [], loading: false, dialog: false, depts: [], deptIds: [],
form: { name: '', depts: [], remark: '', dataScope: '本级' }, form: { name: '', depts: [], remark: '', dataScope: '本级', level: 3 },
rules: { rules: {
name: [ name: [
{ required: true, message: '请输入名称', trigger: 'blur' } { required: true, message: '请输入名称', trigger: 'blur' }
...@@ -120,7 +123,7 @@ export default { ...@@ -120,7 +123,7 @@ export default {
resetForm() { resetForm() {
this.dialog = false this.dialog = false
this.$refs['form'].resetFields() this.$refs['form'].resetFields()
this.form = { name: '', depts: [], remark: '', dataScope: '本级' } this.form = { name: '', depts: [], remark: '', dataScope: '本级', level: 3 }
}, },
getDepts() { getDepts() {
getDepts({ enabled: true }).then(res => { getDepts({ enabled: true }).then(res => {
...@@ -136,5 +139,8 @@ export default { ...@@ -136,5 +139,8 @@ export default {
} }
</script> </script>
<style scoped> <style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-input-number .el-input__inner {
text-align: left;
}
</style> </style>
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','ROLES_ALL','ROLES_CREATE'])" v-permission="['ADMIN','ROLES_ALL','ROLES_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -14,14 +14,10 @@ ...@@ -14,14 +14,10 @@
@click="$refs.form.dialog = true">新增</el-button> @click="$refs.form.dialog = true">新增</el-button>
<eForm ref="form" :is-add="true"/> <eForm ref="form" :is-add="true"/>
</div> </div>
<!-- 导出 -->
<el-button v-if="checkPermission(['ADMIN'])" :loading="downloadLoading" size="mini" class="filter-item" type="primary" icon="el-icon-download" @click="download">导出</el-button>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import { parseTime } from '@/utils/index'
import eForm from './form' import eForm from './form'
// 查询条件 // 查询条件
export default { export default {
...@@ -38,33 +34,9 @@ export default { ...@@ -38,33 +34,9 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
},
download() {
this.downloadLoading = true
import('@/vendor/Export2Excel').then(excel => {
const tHeader = ['ID', '名称', '描述', '创建日期']
const filterVal = ['id', 'name', 'remark', 'createTime']
const data = this.formatJson(filterVal, this.$parent.data)
excel.export_json_to_excel({
header: tHeader,
data,
filename: 'table-list'
})
this.downloadLoading = false
})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => {
if (j === 'createTime') {
return parseTime(v[j])
} else {
return v[j]
}
}))
} }
} }
} }
......
...@@ -19,15 +19,15 @@ ...@@ -19,15 +19,15 @@
<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="180px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','JOB_ALL','JOB_EDIT','JOB_DELETE'])" label="操作" width="180px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','JOB_ALL','JOB_EDIT'])" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','JOB_ALL','JOB_EDIT']" :data="scope.row" :sup_this="sup_this"/>
<el-button v-if="checkPermission(['ADMIN','JOB_ALL','JOB_EDIT'])" style="margin-left: -2px" type="text" size="mini" @click="execute(scope.row.id)">执行</el-button> <el-button v-permission="['ADMIN','JOB_ALL','JOB_EDIT']" style="margin-left: -2px" type="text" size="mini" @click="execute(scope.row.id)">执行</el-button>
<el-button v-if="checkPermission(['ADMIN','JOB_ALL','JOB_EDIT'])" style="margin-left: 3px" type="text" size="mini" @click="updateStatus(scope.row.id,scope.row.isPause ? '恢复' : '暂停')"> <el-button v-permission="['ADMIN','JOB_ALL','JOB_EDIT']" style="margin-left: 3px" type="text" size="mini" @click="updateStatus(scope.row.id,scope.row.isPause ? '恢复' : '暂停')">
{{ scope.row.isPause ? '恢复' : '暂停' }} {{ scope.row.isPause ? '恢复' : '暂停' }}
</el-button> </el-button>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','JOB_ALL','JOB_DELETE'])" v-permission="['ADMIN','JOB_ALL','JOB_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="200"> width="200">
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','JOB_ALL','JOB_CREATE'])" v-permission="['ADMIN','JOB_ALL','JOB_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import eForm from './form' import eForm from './form'
import Log from './log' import Log from './log'
// 查询条件 // 查询条件
...@@ -46,7 +45,6 @@ export default { ...@@ -46,7 +45,6 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<el-select v-model="query.isSuccess" placeholder="日志状态" clearable class="filter-item" style="width: 110px" @change="toQuery"> <el-select v-model="query.isSuccess" placeholder="日志状态" clearable class="filter-item" style="width: 110px" @change="toQuery">
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/> <el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select> </el-select>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
</div> </div>
<!--表格渲染--> <!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;margin-top: -10px;"> <el-table v-loading="loading" :data="data" size="small" style="width: 100%;margin-top: -10px;">
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :xs="24" :sm="24" :md="4" :lg="4" :xl="4"> <el-col :xs="7" :sm="6" :md="4" :lg="4" :xl="4">
<div class="head-container"> <div class="head-container">
<el-input v-model="deptName" clearable placeholder="输入部门名称搜索" prefix-icon="el-icon-search" style="width: 100%;" class="filter-item" @input="getDeptDatas"/> <el-input v-model="deptName" clearable placeholder="输入部门名称搜索" prefix-icon="el-icon-search" style="width: 100%;" class="filter-item" @input="getDeptDatas"/>
</div> </div>
<el-tree :data="depts" :props="defaultProps" :expand-on-click-node="false" default-expand-all @node-click="handleNodeClick"/> <el-tree :data="depts" :props="defaultProps" :expand-on-click-node="false" default-expand-all @node-click="handleNodeClick"/>
</el-col> </el-col>
<el-col :xs="24" :sm="24" :md="20" :lg="20" :xl="20"> <el-col :xs="17" :sm="18" :md="20" :lg="20" :xl="20">
<eHeader :query="query" :sup_this="sup_this" :dicts="dicts"/> <eHeader :query="query" :sup_this="sup_this" :dicts="dicts"/>
<!--表格渲染--> <!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;"> <el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="140" align="center"> <el-table-column v-if="checkPermission(['ADMIN','USER_ALL','USER_EDIT','USER_DELETE'])" label="操作" width="125" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<edit v-if="checkPermission(['ADMIN','USER_ALL','USER_EDIT'])" :dicts="dicts" :data="scope.row" :sup_this="sup_this"/> <edit v-permission="['ADMIN','USER_ALL','USER_EDIT']" :dicts="dicts" :data="scope.row" :sup_this="sup_this"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','USER_ALL','USER_DELETE'])" v-permission="['ADMIN','USER_ALL','USER_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
......
<template> <template>
<div> <div>
<el-button size="mini" type="success" @click="to">编辑</el-button> <el-button size="mini" type="primary" icon="el-icon-edit" @click="to"/>
<eForm ref="form" :sup_this="sup_this" :is-add="false" :dicts="dicts"/> <eForm ref="form" :sup_this="sup_this" :is-add="false" :dicts="dicts"/>
</div> </div>
</template> </template>
...@@ -28,6 +28,7 @@ export default { ...@@ -28,6 +28,7 @@ export default {
const _this = this.$refs.form const _this = this.$refs.form
_this.getRoles() _this.getRoles()
_this.getDepts() _this.getDepts()
_this.getRoleLevel()
_this.roleIds = [] _this.roleIds = []
_this.form = { id: this.data.id, username: this.data.username, phone: this.data.phone, email: this.data.email, enabled: this.data.enabled.toString(), roles: [], dept: { id: this.data.dept.id }, job: { id: this.data.job.id }} _this.form = { id: this.data.id, username: this.data.username, phone: this.data.phone, email: this.data.email, enabled: this.data.enabled.toString(), roles: [], dept: { id: this.data.dept.id }, job: { id: this.data.job.id }}
this.data.roles.forEach(function(data, index) { this.data.roles.forEach(function(data, index) {
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
<el-select v-model="roleIds" style="width: 450px;" multiple placeholder="请选择"> <el-select v-model="roleIds" style="width: 450px;" multiple placeholder="请选择">
<el-option <el-option
v-for="(item, index) in roles" v-for="(item, index) in roles"
:disabled="level !== 1 && item.level <= level"
:key="item.name + index" :key="item.name + index"
:label="item.name" :label="item.name"
:value="item.id"/> :value="item.id"/>
...@@ -46,7 +47,7 @@ ...@@ -46,7 +47,7 @@
import { add, edit } from '@/api/user' import { add, edit } from '@/api/user'
import { getDepts } from '@/api/dept' import { getDepts } from '@/api/dept'
import { getAll } from '@/api/role' import { getAll, getLevel } from '@/api/role'
import { getAllJob } from '@/api/job' import { getAllJob } from '@/api/job'
import Treeselect from '@riophae/vue-treeselect' import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css' import '@riophae/vue-treeselect/dist/vue-treeselect.css'
...@@ -78,7 +79,7 @@ export default { ...@@ -78,7 +79,7 @@ export default {
} }
return { return {
dialog: false, loading: false, form: { username: '', email: '', enabled: 'false', roles: [], job: { id: '' }, dept: { id: '' }, phone: null }, dialog: false, loading: false, form: { username: '', email: '', enabled: 'false', roles: [], job: { id: '' }, dept: { id: '' }, phone: null },
roleIds: [], roles: [], depts: [], deptId: null, jobId: null, jobs: [], style: 'width: 184px', roleIds: [], roles: [], depts: [], deptId: null, jobId: null, jobs: [], style: 'width: 184px', level: 3,
rules: { rules: {
username: [ username: [
{ required: true, message: '请输入用户名', trigger: 'blur' }, { required: true, message: '请输入用户名', trigger: 'blur' },
...@@ -210,6 +211,14 @@ export default { ...@@ -210,6 +211,14 @@ export default {
}, },
selectFun(node, instanceId) { selectFun(node, instanceId) {
this.getJobs(node.id) this.getJobs(node.id)
},
getRoleLevel() {
getLevel().then(res => {
console.log(res)
this.level = res.level
}).catch(err => {
console.log(err.response.data.message)
})
} }
} }
} }
......
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
<el-select v-model="query.enabled" clearable placeholder="状态" class="filter-item" style="width: 90px" @change="toQuery"> <el-select v-model="query.enabled" clearable placeholder="状态" class="filter-item" style="width: 90px" @change="toQuery">
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/> <el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select> </el-select>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 --> <!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','USER_ALL','USER_CREATE'])" v-permission="['ADMIN','USER_ALL','USER_CREATE']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -22,18 +22,17 @@ ...@@ -22,18 +22,17 @@
</div> </div>
<!-- 导出 --> <!-- 导出 -->
<el-button <el-button
v-if="checkPermission(['ADMIN'])" v-permission="['ADMIN']"
:loading="downloadLoading" :loading="downloadLoading"
size="mini" size="mini"
class="filter-item" class="filter-item"
type="primary" type="warning"
icon="el-icon-download" icon="el-icon-download"
@click="download">导出</el-button> @click="download">导出</el-button>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import { parseTime } from '@/utils/index' import { parseTime } from '@/utils/index'
import eForm from './form' import eForm from './form'
// 查询条件 // 查询条件
...@@ -67,10 +66,10 @@ export default { ...@@ -67,10 +66,10 @@ export default {
} }
}, },
methods: { methods: {
checkPermission,
add() { add() {
this.$refs.form.getDepts() this.$refs.form.getDepts()
this.$refs.form.getRoles() this.$refs.form.getRoles()
this.$refs.form.getRoleLevel()
this.$refs.form.dialog = true this.$refs.form.dialog = true
}, },
// 去查询 // 去查询
......
...@@ -24,7 +24,9 @@ ...@@ -24,7 +24,9 @@
<el-input v-model="form.notifyUrl" style="width: 40%;"/> <el-input v-model="form.notifyUrl" style="width: 40%;"/>
<span style="color: #C0C0C0;margin-left: 10px;">支付结果异步通知地址</span> <span style="color: #C0C0C0;margin-left: 10px;">支付结果异步通知地址</span>
</el-form-item> </el-form-item>
<el-button :loading="loading" style="margin-left:5%;" size="medium" type="success" @click="doSubmit">保存配置</el-button> <el-form-item label="">
<el-button :loading="loading" size="medium" type="primary" @click="doSubmit">保存配置</el-button>
</el-form-item>
</el-form> </el-form>
</template> </template>
......
...@@ -11,7 +11,9 @@ ...@@ -11,7 +11,9 @@
<el-form-item label="商品描述" prop="body"> <el-form-item label="商品描述" prop="body">
<el-input v-model="form.body" style="width: 35%" rows="8" type="textarea"/> <el-input v-model="form.body" style="width: 35%" rows="8" type="textarea"/>
</el-form-item> </el-form-item>
<el-button :loading="loading" style="margin-left:2%;" size="medium" type="success" @click="doSubmit">去支付</el-button> <el-form-item label="">
<el-button :loading="loading" size="medium" type="primary" @click="doSubmit">去支付</el-button>
</el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
......
...@@ -20,7 +20,9 @@ ...@@ -20,7 +20,9 @@
<el-input v-model="form.port" style="width: 40%;"/> <el-input v-model="form.port" style="width: 40%;"/>
<span style="color: #C0C0C0;margin-left: 10px;">SMTP port</span> <span style="color: #C0C0C0;margin-left: 10px;">SMTP port</span>
</el-form-item> </el-form-item>
<el-button :loading="loading" style="margin-left:5%;" size="medium" type="success" @click="doSubmit">保存配置</el-button> <el-form-item label="">
<el-button :loading="loading" size="medium" type="primary" @click="doSubmit">保存配置</el-button>
</el-form-item>
</el-form> </el-form>
</template> </template>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<el-button style="margin-left:0px;" icon="el-icon-minus" @click.prevent="removeDomain(domain)"/> <el-button style="margin-left:0px;" icon="el-icon-minus" @click.prevent="removeDomain(domain)"/>
</el-form-item> </el-form-item>
<div ref="editor" class="editor"/> <div ref="editor" class="editor"/>
<el-button :loading="loading" style="margin-left:2%;" size="medium" type="success" @click="doSubmit">发送邮件</el-button> <el-button :loading="loading" style="margin-left:1.6%;" size="medium" type="primary" @click="doSubmit">发送邮件</el-button>
</el-form> </el-form>
</div> </div>
</template> </template>
......
...@@ -2,10 +2,11 @@ ...@@ -2,10 +2,11 @@
<div class="app-container"> <div class="app-container">
<eHeader :query="query"/> <eHeader :query="query"/>
<!--表格渲染--> <!--表格渲染-->
<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 prop="filename" label="文件名"/> <el-table-column prop="filename" label="文件名"/>
<el-table-column prop="username" label="上传者"/> <el-table-column prop="username" label="上传者"/>
<el-table-column :show-overflow-tooltip="true" prop="url" label="缩略图"> <el-table-column ref="table" :show-overflow-tooltip="true" prop="url" label="缩略图">
<template slot-scope="scope"> <template slot-scope="scope">
<a :href="scope.row.url" style="color: #42b983" target="_blank"><img :src="scope.row.url" alt="点击打开" class="el-avatar"></a> <a :href="scope.row.url" style="color: #42b983" target="_blank"><img :src="scope.row.url" alt="点击打开" class="el-avatar"></a>
</template> </template>
...@@ -18,10 +19,9 @@ ...@@ -18,10 +19,9 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','PICTURE_ALL','PICTURE_DELETE'])" label="操作" width="100px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover <el-popover
v-if="checkPermission(['ADMIN','PICTURE_ALL','PICTURE_DELETE'])"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
...@@ -71,9 +71,10 @@ export default { ...@@ -71,9 +71,10 @@ export default {
this.url = 'api/pictures' this.url = 'api/pictures'
const sort = 'id,desc' const sort = 'id,desc'
const query = this.query const query = this.query
const type = query.type
const value = query.value const value = query.value
this.params = { page: this.page, size: this.size, sort: sort } this.params = { page: this.page, size: this.size, sort: sort }
if (value) { this.params['filename'] = value } if (type && value) { this.params[type] = value }
return true return true
}, },
subDelete(id) { subDelete(id) {
......
<template> <template>
<div class="head-container"> <div class="head-container">
<!--搜索--> <!--搜索-->
<el-input v-model="query.value" clearable placeholder="输入文件名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入关键字搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px">
<el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 上传 --> <!-- 上传 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
v-if="checkPermission(['ADMIN','PICTURE_ALL','PICTURE_UPLOAD'])" v-permission="['ADMIN','PICTURE_ALL','PICTURE_UPLOAD']"
class="filter-item" class="filter-item"
size="mini" size="mini"
type="primary" type="primary"
...@@ -14,12 +17,21 @@ ...@@ -14,12 +17,21 @@
@click="$refs.form.dialog = true">上传图片</el-button> @click="$refs.form.dialog = true">上传图片</el-button>
<eForm ref="form"/> <eForm ref="form"/>
</div> </div>
<el-button
v-permission="['ADMIN','PICTURE_ALL','PICTURE_DELETE']"
:loading="delLoading"
:disabled="$parent.data.length === 0 || $parent.$refs.table.selection.length === 0"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-delete"
@click="open">删除</el-button>
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' // 权限判断函数
import eForm from './form' import eForm from './form'
import { delAll } from '@/api/picture'
// 查询条件 // 查询条件
export default { export default {
components: { eForm }, components: { eForm },
...@@ -29,11 +41,49 @@ export default { ...@@ -29,11 +41,49 @@ export default {
required: true required: true
} }
}, },
data() {
return {
downloadLoading: false,
delLoading: false,
queryTypeOptions: [
{ key: 'filename', display_name: '文件名' },
{ key: 'username', display_name: '用户名' }
]
}
},
methods: { methods: {
checkPermission,
toQuery() { toQuery() {
this.$parent.page = 0 this.$parent.page = 0
this.$parent.init() this.$parent.init()
},
doDelete() {
this.delLoading = true
const data = this.$parent.$refs.table.selection
const ids = []
for (let i = 0; i < data.length; i++) {
ids.push(data[i].id)
}
delAll(ids).then(res => {
this.delLoading = false
this.$parent.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
console.log(err.response.data.message)
})
},
open() {
this.$confirm('你确定删除选中的数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.doDelete()
})
} }
} }
} }
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<el-radio v-model="form.type" label="私有" >私有</el-radio> <el-radio v-model="form.type" label="私有" >私有</el-radio>
<span style="color: #C0C0C0;margin-left: 10px;">公开和私有仅对 Bucket 的读文件生效,修改、删除、写入等对 Bucket 的操作均需要拥有者的授权才能进行操作</span> <span style="color: #C0C0C0;margin-left: 10px;">公开和私有仅对 Bucket 的读文件生效,修改、删除、写入等对 Bucket 的操作均需要拥有者的授权才能进行操作</span>
</el-form-item> </el-form-item>
<el-button :loading="loading" style="margin-left:5%;" size="medium" type="success" @click="doSubmit">保存配置</el-button> <el-button :loading="loading" style="margin-left:5%;" size="medium" type="primary" @click="doSubmit">保存配置</el-button>
</el-form> </el-form>
</template> </template>
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<div class="app-container"> <div class="app-container">
<eHeader :query="query"/> <eHeader :query="query"/>
<!--表格渲染--> <!--表格渲染-->
<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" label="文件名"> <el-table-column :show-overflow-tooltip="true" label="文件名">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.key }}</span> <span>{{ scope.row.key }}</span>
...@@ -21,14 +22,16 @@ ...@@ -21,14 +22,16 @@
<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="160px" align="center"> <el-table-column v-if="checkPermission(['ADMIN','PICTURE_ALL','PICTURE_DELETE'])" label="操作" width="130px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
:loading="downloadLoading" :loading="downloadLoading"
size="mini" size="mini"
@click="download(scope.row.id)">下载</el-button> type="primary"
icon="el-icon-download"
@click="download(scope.row.id)"/>
<el-popover <el-popover
v-if="checkPermission(['ADMIN','PICTURE_ALL','PICTURE_DELETE'])" v-permission="['ADMIN','PICTURE_ALL','PICTURE_DELETE']"
:ref="scope.row.id" :ref="scope.row.id"
placement="top" placement="top"
width="180"> width="180">
...@@ -37,7 +40,7 @@ ...@@ -37,7 +40,7 @@
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button> <el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button> <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div> </div>
<el-button slot="reference" type="danger" size="mini">删除</el-button> <el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="head-container"> <div class="head-container">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入文件名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/> <el-input v-model="query.value" clearable placeholder="输入文件名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-search" @click="toQuery">搜索</el-button> <el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 上传 --> <!-- 上传 -->
<div style="display: inline-block;margin: 0px 2px;"> <div style="display: inline-block;margin: 0px 2px;">
<el-button <el-button
...@@ -14,13 +14,24 @@ ...@@ -14,13 +14,24 @@
<eForm ref="form"/> <eForm ref="form"/>
</div> </div>
<!-- 同步 --> <!-- 同步 -->
<el-button :icon="icon" class="filter-item" size="mini" type="primary" @click="synchronize">{{ buttonName }}</el-button> <el-button :icon="icon" class="filter-item" size="mini" type="warning" @click="synchronize">{{ buttonName }}</el-button>
<div style="display: inline-block;margin: 0px 2px;">
<el-button
v-permission="['ADMIN','PICTURE_ALL','PICTURE_DELETE']"
:loading="delLoading"
:disabled="$parent.data.length === 0 || $parent.$refs.table.selection.length === 0"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-delete"
@click="open">删除</el-button>
</div>
</div> </div>
</template> </template>
<script> <script>
import eForm from './form' import eForm from './form'
import { sync } from '@/api/qiniu' import { sync, delAll } from '@/api/qiniu'
// 查询条件 // 查询条件
export default { export default {
components: { eForm }, components: { eForm },
...@@ -33,7 +44,8 @@ export default { ...@@ -33,7 +44,8 @@ export default {
data() { data() {
return { return {
icon: 'el-icon-refresh', icon: 'el-icon-refresh',
buttonName: '同步数据' buttonName: '同步数据',
delLoading: false
} }
}, },
methods: { methods: {
...@@ -59,6 +71,35 @@ export default { ...@@ -59,6 +71,35 @@ export default {
this.buttonName = '同步数据' this.buttonName = '同步数据'
console.log(err.response.data.message) console.log(err.response.data.message)
}) })
},
doDelete() {
this.delLoading = true
const data = this.$parent.$refs.table.selection
const ids = []
for (let i = 0; i < data.length; i++) {
ids.push(data[i].id)
}
delAll(ids).then(res => {
this.delLoading = false
this.$parent.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
console.log(err.response.data.message)
})
},
open() {
this.$confirm('你确定删除选中的数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.doDelete()
})
} }
} }
} }
......
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