列表加入日期搜索与导出功能

This commit is contained in:
dqjdda
2019-10-31 09:34:38 +08:00
parent f2aca3bbc0
commit 84bda94b00
32 changed files with 595 additions and 53 deletions

View File

@@ -4,6 +4,15 @@
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入部门名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<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-select>
@@ -17,6 +26,16 @@
icon="el-icon-plus"
@click="add">新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd" :dicts="dict.dept_status"/>
@@ -62,8 +81,8 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, edit } from '@/api/dept'
import { parseTime } from '@/utils/index'
import { del, edit, downloadDept } from '@/api/dept'
import { parseTime, downloadFile } from '@/utils/index'
import eForm from './form'
export default {
name: 'Dept',
@@ -96,6 +115,10 @@ export default {
const value = query.value
const enabled = query.enabled
if (value) { this.params['name'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
if (enabled !== '' && enabled !== null) { this.params['enabled'] = enabled }
return true
},
@@ -157,6 +180,16 @@ export default {
}).catch(() => {
data.enabled = !data.enabled
})
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadDept(this.params).then(result => {
downloadFile(result, '部门列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -21,6 +21,16 @@
<!-- 搜索 -->
<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="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
</div>
<!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" highlight-current-row style="width: 100%;" @current-change="handleCurrentChange">
@@ -77,8 +87,9 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del } from '@/api/dict'
import { del, downloadDict } from '@/api/dict'
import dictDetail from '../dictDetail/index'
import { downloadFile } from '@/utils/index'
import eForm from './form'
export default {
name: 'Dict',
@@ -147,6 +158,16 @@ export default {
remark: data.remark
}
_this.dialog = true
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadDict(this.params).then(result => {
downloadFile(result, '字典列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -4,6 +4,15 @@
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入岗位名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<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-select>
@@ -17,6 +26,16 @@
icon="el-icon-plus"
@click="add">新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd" :dicts="dict.job_status"/>
@@ -79,8 +98,8 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, edit } from '@/api/job'
import { parseTime } from '@/utils/index'
import { del, edit, downloadJob } from '@/api/job'
import { parseTime, downloadFile } from '@/utils/index'
import eForm from './form'
export default {
name: 'Job',
@@ -113,6 +132,10 @@ export default {
const value = query.value
const enabled = query.enabled
if (value) { this.params['name'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
if (enabled !== '' && enabled !== null) { this.params['enabled'] = enabled }
return true
},
@@ -173,6 +196,16 @@ export default {
}).catch(() => {
data.enabled = !data.enabled
})
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadJob(this.params).then(result => {
downloadFile(result, '岗位列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -4,6 +4,15 @@
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="模糊搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 -->
<div v-permission="['admin','menu:add']" style="display: inline-block;margin: 0px 2px;">
@@ -14,6 +23,16 @@
icon="el-icon-plus"
@click="add">新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd"/>
@@ -81,8 +100,8 @@
<script>
import checkPermission from '@/utils/permission' // 权限判断函数
import initData from '@/mixins/initData'
import { del } from '@/api/menu'
import { parseTime } from '@/utils/index'
import { del, downloadMenu } from '@/api/menu'
import { parseTime, downloadFile } from '@/utils/index'
import eForm from './form'
export default {
name: 'Menu',
@@ -108,6 +127,10 @@ export default {
const value = query.value
this.params = { page: this.page, size: this.size, sort: sort }
if (value) { this.params['blurry'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
return true
},
subDelete(id) {
@@ -142,6 +165,16 @@ export default {
changExpand() {
this.expand = !this.expand
this.init()
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadMenu(this.params).then(result => {
downloadFile(result, '菜单列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -1,17 +1,14 @@
<template>
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="cancel" :title="isAdd ? '新增角色' : '编辑角色'" append-to-body width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="cancel" :title="isAdd ? '新增角色' : '编辑角色'" append-to-body width="520px">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="角色名称" prop="name">
<el-input v-model="form.name" style="width: 370px;"/>
<el-input v-model="form.name" style="width: 145px;"/>
</el-form-item>
<el-form-item label="角色权限">
<el-input v-model="form.permission" style="width: 370px;"/>
</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 label="角色权限" prop="permission">
<el-input v-model="form.permission" style="width: 145px;"/>
</el-form-item>
<el-form-item label="数据范围">
<el-select v-model="form.dataScope" style="width: 370px" placeholder="请选择数据范围" @change="changeScope">
<el-select v-model="form.dataScope" style="width: 145px" placeholder="请选择数据范围" @change="changeScope">
<el-option
v-for="item in dateScopes"
:key="item"
@@ -19,11 +16,14 @@
:value="item"/>
</el-select>
</el-form-item>
<el-form-item label="角色级别" prop="sort">
<el-input-number v-model.number="form.level" :min="1" controls-position="right" style="width: 145px;"/>
</el-form-item>
<el-form-item v-if="form.dataScope === '自定义'" label="数据权限">
<treeselect v-model="deptIds" :options="depts" multiple style="width: 370px" placeholder="请选择" />
<treeselect v-model="deptIds" :options="depts" multiple style="width: 380px" placeholder="请选择" />
</el-form-item>
<el-form-item label="描述信息">
<el-input v-model="form.remark" style="width: 370px;" rows="5" type="textarea"/>
<el-input v-model="form.remark" style="width: 380px;" rows="5" type="textarea"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -54,6 +54,9 @@ export default {
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
],
permission: [
{ required: true, message: '请输入权限', trigger: 'blur' }
]
}
}

View File

@@ -6,6 +6,15 @@
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入名称或者描述搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 -->
<div v-permission="['admin','roles:add']" style="display: inline-block;margin: 0px 2px;">
@@ -16,6 +25,16 @@
icon="el-icon-plus"
@click="add">新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
</div>
<el-row :gutter="15">
<!--角色管理-->
@@ -100,9 +119,9 @@ import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del } from '@/api/role'
import { getMenusTree } from '@/api/menu'
import { parseTime } from '@/utils/index'
import { parseTime, downloadFile } from '@/utils/index'
import eForm from './form'
import { editMenu, get } from '@/api/role'
import { editMenu, get, downloadRole } from '@/api/role'
export default {
name: 'Role',
components: { eForm },
@@ -134,6 +153,10 @@ export default {
const value = query.value
this.params = { page: this.page, size: this.size, sort: sort }
if (value) { this.params['blurry'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
// 清空菜单的选中
this.$refs.menu.setCheckedKeys([])
return true
@@ -231,6 +254,16 @@ export default {
_this.deptIds[i] = _this.form.depts[i].id
}
_this.dialog = true
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadRole(this.params).then(result => {
downloadFile(result, '角色列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -4,6 +4,15 @@
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 -->
<div v-permission="['admin','timing:add']" style="display: inline-block;margin: 0px 2px;">
@@ -14,14 +23,24 @@
icon="el-icon-plus"
@click="dialog = true;isAdd = true">新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
<!-- 任务日志 -->
<div style="display: inline-block;">
<el-button
class="filter-item"
size="mini"
type="warning"
type="info"
icon="el-icon-tickets"
@click="doLog">执行日志</el-button>
@click="doLog">日志</el-button>
<Log ref="log"/>
</div>
</div>
@@ -110,8 +129,8 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, updateIsPause, execution, add, edit } from '@/api/timing'
import { parseTime } from '@/utils/index'
import { del, updateIsPause, execution, add, edit, downloadJobs } from '@/api/timing'
import { parseTime, downloadFile } from '@/utils/index'
import Log from './log'
export default {
name: 'Timing',
@@ -153,6 +172,10 @@ export default {
const value = query.value
this.params = { page: this.page, size: this.size, sort: sort }
if (value) { this.params['jobName'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
return true
},
execute(id) {
@@ -258,6 +281,16 @@ export default {
this.isAdd = false
this.form = { id: data.id, jobName: data.jobName, beanName: data.beanName, methodName: data.methodName, params: data.params, cronExpression: data.cronExpression, isPause: data.isPause.toString(), remark: data.remark }
this.dialog = true
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadJobs(this.params).then(result => {
downloadFile(result, '任务列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -3,10 +3,29 @@
<!-- 搜索 -->
<div class="head-container">
<el-input v-model="query.value" clearable placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<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-select>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
</div>
<!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;margin-top: -10px;">
@@ -52,7 +71,8 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { parseTime } from '@/utils/index'
import { downloadLogs } from '@/api/timing'
import { parseTime, downloadFile } from '@/utils/index'
export default {
mixins: [initData],
data() {
@@ -86,12 +106,26 @@ export default {
this.size = 6
this.params = { page: this.page, size: this.size, sort: sort }
if (value) { this.params['jobName'] = value }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
if (isSuccess !== '' && isSuccess !== null) { this.params['isSuccess'] = isSuccess }
return true
},
info(errorInfo) {
this.errorInfo = errorInfo
this.errorDialog = true
},
download() {
this.beforeInit()
this.downloadLoading = true
downloadLogs(this.params).then(result => {
downloadFile(result, '任务日志列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}

View File

@@ -16,6 +16,15 @@
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.blurry" clearable placeholder="输入名称或者邮箱搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-date-picker
v-model="query.date"
type="daterange"
range-separator=":"
class="el-range-editor--small filter-item"
style="height: 30.5px;width: 220px"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<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-select>
@@ -32,7 +41,6 @@
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
v-permission="['admin','user:list']"
:loading="downloadLoading"
size="mini"
class="filter-item"
@@ -117,7 +125,6 @@ export default {
children: 'children',
label: 'name'
},
downloadLoading: false,
enabledTypeOptions: [
{ key: 'true', display_name: '激活' },
{ key: 'false', display_name: '锁定' }
@@ -147,9 +154,24 @@ export default {
const enabled = query.enabled
this.params = { page: this.page, size: this.size, sort: sort, deptId: this.deptId }
if (blurry) { this.params['blurry'] = blurry }
if (query.date) {
this.params['startTime'] = query.date[0]
this.params['endTime'] = query.date[1]
}
if (enabled !== '' && enabled !== null) { this.params['enabled'] = enabled }
return true
},
// 导出
download() {
this.beforeInit()
this.downloadLoading = true
downloadUser(this.params).then(result => {
downloadFile(result, '用户列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
},
subDelete(id) {
this.delLoading = true
del(id).then(res => {
@@ -191,16 +213,6 @@ export default {
this.$refs.form.getRoleLevel()
this.$refs.form.dialog = true
},
// 导出
download() {
this.downloadLoading = true
downloadUser().then(result => {
downloadFile(result, '用户列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
},
// 数据转换
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => {