update 系统管理

This commit is contained in:
yoe 2020-05-13 17:49:42 +08:00
parent 05e1ea5842
commit b7346156dd
11 changed files with 414 additions and 578 deletions

View File

@ -13,18 +13,18 @@ export const apiSysRoleSelect = params => {
return http({ url: '/lz_management/sys/role/select', method: 'get', params }) return http({ url: '/lz_management/sys/role/select', method: 'get', params })
} }
// 用户编辑 // 编辑用户
export const apiSysUserInfo = (params, id) => { export const apiSysUserInfo = (params, id) => {
return http({ url: `/lz_management/sys/user/info${id}`, method: 'get', params }) return http({ url: `/lz_management/sys/user/info${id}`, method: 'get', params })
} }
// 提交用户 // 提交用户
export const apiSysUserConfirm = (data, type) => { export const apiSysUserConfirm = (data, type) => {
return http({ url: `/lz_management/sys/user${type}`, method: 'post', data }) return http({ url: `/lz_management/sys/user${type}`, method: 'post', data })
} }
// 删除用户 // 删除用户
export const apiSysUserDelete = (data, type) => { export const apiSysUserDelete = data => {
return http({ url: `/lz_management/sys/user/delete`, method: 'post', data }) return http({ url: `/lz_management/sys/user/delete`, method: 'post', data })
} }
@ -36,18 +36,18 @@ export const apiSysRoleList = params => {
return http({ url: '/lz_management/sys/role/list', method: 'get', params }) return http({ url: '/lz_management/sys/role/list', method: 'get', params })
} }
// 角色编辑 // 编辑角色
export const apiSysRoleInfo = (params, id) => { export const apiSysRoleInfo = (params, id) => {
return http({ url: `/lz_management/sys/role/info${id}`, method: 'get', params }) return http({ url: `/lz_management/sys/role/info${id}`, method: 'get', params })
} }
// 角色提交 // 提交角色
export const apiSysRoleConfirm = (data, type) => { export const apiSysRoleConfirm = (data, type) => {
return http({ url: `/lz_management/sys/role${type}`, method: 'post', data }) return http({ url: `/lz_management/sys/role${type}`, method: 'post', data })
} }
// 删除角色 // 删除角色
export const apiSysRoleDelete = (data, type) => { export const apiSysRoleDelete = data => {
return http({ url: `/lz_management/sys/role/delete`, method: 'post', data }) return http({ url: `/lz_management/sys/role/delete`, method: 'post', data })
} }
@ -64,12 +64,12 @@ export const apiSysMenuSelect = params => {
return http({ url: '/lz_management/sys/menu/select', method: 'get', params }) return http({ url: '/lz_management/sys/menu/select', method: 'get', params })
} }
// 菜单编辑 // 编辑菜单
export const apiSysMenuInfo = (params, id) => { export const apiSysMenuInfo = (params, id) => {
return http({ url: `/lz_management/sys/menu/info${id}`, method: 'get', params }) return http({ url: `/lz_management/sys/menu/info${id}`, method: 'get', params })
} }
// 菜单提交 // 提交菜单
export const apiSysMenuConfirm = (data, type) => { export const apiSysMenuConfirm = (data, type) => {
return http({ url: `/lz_management/sys/menu${type}`, method: 'post', data }) return http({ url: `/lz_management/sys/menu${type}`, method: 'post', data })
} }
@ -78,3 +78,105 @@ export const apiSysMenuConfirm = (data, type) => {
export const apiSysMenuDelete = (data, id) => { export const apiSysMenuDelete = (data, id) => {
return http({ url: `/lz_management/sys/menu/delete${id}`, method: 'post', data }) return http({ url: `/lz_management/sys/menu/delete${id}`, method: 'post', data })
} }
/**
* 定时任务
*/
// 定时任务列表
export const apiSysScheduleList = params => {
return http({ url: '/lz_management/sys/schedule/list', method: 'get', params })
}
// 删除定时任务
export const apiSysScheduleDelete = data => {
return http({ url: `/lz_management/sys/schedule/delete`, method: 'post', data })
}
// 暂停定时任务
export const apiSysSchedulePause = data => {
return http({ url: `/lz_management/sys/schedule/pause`, method: 'post', data })
}
// 恢复定时任务
export const apiSysScheduleResume = data => {
return http({ url: `/lz_management/sys/schedule/resume`, method: 'post', data })
}
// 立即执行定时任务
export const apiSysScheduleRun = data => {
return http({ url: `/lz_management/sys/schedule/run`, method: 'post', data })
}
// 定时任务日志列表
export const apiSysScheduleLogList = params => {
return http({ url: '/lz_management/sys/scheduleLog/list', method: 'get', params })
}
// 定时任务日志失效信息
export const apiSysScheduleLogInfo = (params, id) => {
return http({ url: `/lz_management/sys/scheduleLog/info${id}`, method: 'get', params })
}
// 编辑定时任务
export const apiSysScheduleInfo = (params, id) => {
return http({ url: `/lz_management/sys/schedule/info${id}`, method: 'get', params })
}
// 提交定时任务
export const apiSysScheduleConfirm = (data, type) => {
return http({ url: `/lz_management/sys/schedule${type}`, method: 'post', data })
}
/**
* 参数管理
*/
// 定时任务列表
export const apiSysConfigList = params => {
return http({ url: '/lz_management/sys/config/list', method: 'get', params })
}
// 删除参数
export const apiSysConfigDelete = data => {
return http({ url: `/lz_management/sys/config/delete`, method: 'post', data })
}
// 编辑参数
export const apiSysConfigInfo = (params, id) => {
return http({ url: `/lz_management/sys/config/info${id}`, method: 'get', params })
}
// 提交参数
export const apiSysConfigConfirm = (data, type) => {
return http({ url: `/lz_management/sys/config${type}`, method: 'post', data })
}
/**
* 日志管理
*/
// 日志管理列表
export const apiSysLogList = params => {
return http({ url: '/lz_management/sys/log/list', method: 'get', params })
}
/**
* 文件上传
*/
// 文件上传列表
export const apiSysOssList = params => {
return http({ url: '/lz_management/sys/oss/list', method: 'get', params })
}
// 删除文件上传记录
export const apiSysOssDelete = data => {
return http({ url: `/lz_management/sys/oss/delete`, method: 'post', data })
}
// 编辑云储存配置
export const apiSysOssConfig = params => {
return http({ url: `/lz_management/sys/oss/config`, method: 'get', params })
}
// 提交云储存配置
export const apiSysOssSaveConfig = params => {
return http({ url: `/lz_management/sys/oss/saveConfig`, method: 'get', params })
}

View File

@ -34,10 +34,11 @@ const mainRoutes = {
// 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否 // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
// 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理! // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
{ path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } }, { path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } },
{ path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } }, { path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } }
{ path: '/staff-manage', component: _import('business/staff/staff-manage/index'), name: 'staff-manage', meta: { title: '员工管理', isTab: true, isNoCard: true } }, // { path: '/staff-manage', component: _import('business/staff/staff-manage/index'), name: 'staff-manage', meta: { title: '员工管理', isTab: true, isNoCard: true } },
{ path: '/staff-profile', component: _import('business/staff/staff-profile/index'), name: 'staff-profile', meta: { title: '员工概述', isTab: true, isNoCard: true } }, // { path: '/staff-profile', component: _import('business/staff/staff-profile/index'), name: 'staff-profile', meta: { title: '员工概述', isTab: true, isNoCard: true } },
{ path: '/staff-archives', component: _import('business/staff/staff-archives/index'), name: 'staff-archives', meta: { title: '员工档案', isTab: true, isNoCard: true } } // { path: '/staff-archives', component: _import('business/staff/staff-archives/index'), name: 'staff-archives', meta: { title: '员工档案', isTab: true, isNoCard: true } }
// { path: '/sys/user/index', component: _import('modules/sys/user/index'), name: 'staff-archives1', meta: { title: '员工档案', isTab: true, isNoCard: true } }
], ],
beforeEnter (to, from, next) { beforeEnter (to, from, next) {
let token = Vue.cookie.get('token') let token = Vue.cookie.get('token')
@ -108,9 +109,9 @@ function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
} else if (menuList[i].url && /\S/.test(menuList[i].url)) { } else if (menuList[i].url && /\S/.test(menuList[i].url)) {
menuList[i].url = menuList[i].url.replace(/^\//, '') menuList[i].url = menuList[i].url.replace(/^\//, '')
var route = { var route = {
path: menuList[i].url.replace('/', '-'), path: menuList[i].url.replace(/(\/)/g, '-'),
component: null, component: null,
name: menuList[i].url.replace('/', '-'), name: menuList[i].url.replace(/(\/)/g, '-'),
meta: { meta: {
menuId: menuList[i].menuId, menuId: menuList[i].menuId,
title: menuList[i].name, title: menuList[i].name,
@ -142,10 +143,7 @@ function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
{ path: '*', redirect: { name: '404' } } { path: '*', redirect: { name: '404' } }
]) ])
sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]')) sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]'))
console.log('\n') console.log('%c!<--- 动态(菜单)路由加载完成 --->', 'color:blue', mainRoutes.children)
console.log('%c!<-------------------- 动态(菜单)路由 s -------------------->', 'color:blue')
console.log(mainRoutes.children)
console.log('%c!<-------------------- 动态(菜单)路由 e -------------------->', 'color:blue')
} }
} }

View File

@ -1,9 +1,9 @@
<template> <template>
<el-dialog <el-dialog
:title="!dataForm.id ? '新增' : '修改'" :title="!dataForm.id ? '新增' : '编辑'"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible"> :visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="100px"> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="handleConfirm()" label-width="100px">
<el-form-item label="bean名称" prop="beanName"> <el-form-item label="bean名称" prop="beanName">
<el-input v-model="dataForm.beanName" placeholder="spring bean名称, 如: testTask"></el-input> <el-input v-model="dataForm.beanName" placeholder="spring bean名称, 如: testTask"></el-input>
</el-form-item> </el-form-item>
@ -19,12 +19,14 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> <el-button type="primary" @click="handleConfirm()">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { apiSysScheduleInfo, apiSysScheduleConfirm } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -38,55 +40,49 @@
status: 0 status: 0
}, },
dataRule: { dataRule: {
beanName: [ beanName: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
{ required: true, message: '用户名不能为空', trigger: 'blur' } cronExpression: [{ required: true, message: 'cron表达式不能为空', trigger: 'blur' }]
], },
cronExpression: [ apiType: '' // api
{ required: true, message: 'cron表达式不能为空', trigger: 'blur' }
]
}
} }
}, },
methods: { methods: {
init (id) { init (id) {
this.dataForm.id = id || 0
this.visible = true this.visible = true
this.$nextTick(() => { if (id) {
this.$refs['dataForm'].resetFields() this.dataForm.id = id || 0
if (this.dataForm.id) { this.handleEdit()
this.$http({ this.apiType = '/update'
url: this.$http.adornUrl(`/sys/schedule/info/${this.dataForm.id}`), } else {
method: 'get', this.apiType = '/save'
params: this.$http.adornParams()
}).then(({data}) => {
if (data && data.code === 0) {
this.dataForm.beanName = data.schedule.beanName
this.dataForm.params = data.schedule.params
this.dataForm.cronExpression = data.schedule.cronExpression
this.dataForm.remark = data.schedule.remark
this.dataForm.status = data.schedule.status
} }
}) },
//
handleEdit () {
apiSysScheduleInfo({}, `/${this.dataForm.id}`).then(res => {
if (res && res.code === 0) {
this.dataForm.beanName = res.schedule.beanName
this.dataForm.params = res.schedule.params
this.dataForm.cronExpression = res.schedule.cronExpression
this.dataForm.remark = res.schedule.remark
this.dataForm.status = res.schedule.status
} }
}) })
}, },
// //
dataFormSubmit () { handleConfirm () {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
this.$http({ let params = {
url: this.$http.adornUrl(`/sys/schedule/${!this.dataForm.id ? 'save' : 'update'}`),
method: 'post',
data: this.$http.adornData({
'jobId': this.dataForm.id || undefined, 'jobId': this.dataForm.id || undefined,
'beanName': this.dataForm.beanName, 'beanName': this.dataForm.beanName,
'params': this.dataForm.params, 'params': this.dataForm.params,
'cronExpression': this.dataForm.cronExpression, 'cronExpression': this.dataForm.cronExpression,
'remark': this.dataForm.remark, 'remark': this.dataForm.remark,
'status': !this.dataForm.id ? undefined : this.dataForm.status 'status': !this.dataForm.id ? undefined : this.dataForm.status
}) }
}).then(({data}) => { apiSysScheduleConfirm(params, this.apiType).then(res => {
if (data && data.code === 0) { if (res && res.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
@ -97,7 +93,7 @@
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
} }

View File

@ -4,73 +4,31 @@
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible" :visible.sync="visible"
width="75%"> width="75%">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="handleGetTableList()">
<el-form-item> <el-form-item>
<el-input v-model="dataForm.id" placeholder="任务ID" clearable></el-input> <el-input v-model="dataForm.id" placeholder="任务ID" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="handleGetTableList()">查询</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table :data="dataList" border v-loading="dataListLoading" height="460" style="width: 100%;">
:data="dataList" <el-table-column prop="logId" header-align="center" align="center" width="80" label="日志ID"></el-table-column>
border <el-table-column prop="jobId" header-align="center" align="center" width="80" label="任务ID"></el-table-column>
v-loading="dataListLoading" <el-table-column prop="beanName" header-align="center" align="center" label="bean名称"></el-table-column>
height="460" <el-table-column prop="params" header-align="center" align="center" label="参数"></el-table-column>
style="width: 100%;"> <el-table-column prop="status" header-align="center" align="center" label="状态">
<el-table-column
prop="logId"
header-align="center"
align="center"
width="80"
label="日志ID">
</el-table-column>
<el-table-column
prop="jobId"
header-align="center"
align="center"
width="80"
label="任务ID">
</el-table-column>
<el-table-column
prop="beanName"
header-align="center"
align="center"
label="bean名称">
</el-table-column>
<el-table-column
prop="params"
header-align="center"
align="center"
label="参数">
</el-table-column>
<el-table-column
prop="status"
header-align="center"
align="center"
label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small">成功</el-tag> <el-tag v-if="scope.row.status === 0" size="small">成功</el-tag>
<el-tag v-else @click.native="showErrorInfo(scope.row.logId)" size="small" type="danger" style="cursor: pointer;">失败</el-tag> <el-tag v-else @click.native="handleShowErrorInfo(scope.row.logId)" size="small" type="danger" style="cursor: pointer;">失败</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="times" header-align="center" align="center" label="耗时(单位: 毫秒)"></el-table-column>
prop="times" <el-table-column prop="createTime" header-align="center" align="center" width="180" label="执行时间"></el-table-column>
header-align="center"
align="center"
label="耗时(单位: 毫秒)">
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
width="180"
label="执行时间">
</el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
@size-change="sizeChangeHandle" @size-change="handleChangeSize"
@current-change="currentChangeHandle" @current-change="handleChangeCurrent"
:current-page="pageIndex" :current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pageSize" :page-size="pageSize"
@ -81,6 +39,8 @@
</template> </template>
<script> <script>
import { apiSysScheduleLogList, apiSysScheduleLogInfo } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -98,23 +58,18 @@
methods: { methods: {
init () { init () {
this.visible = true this.visible = true
this.getDataList() this.handleGetTableList()
}, },
// //
getDataList () { handleGetTableList () {
this.dataListLoading = true apiSysScheduleLogList({
this.$http({
url: this.$http.adornUrl('/sys/scheduleLog/list'),
method: 'get',
params: this.$http.adornParams({
'page': this.pageIndex, 'page': this.pageIndex,
'limit': this.pageSize, 'limit': this.pageSize,
'jobId': this.dataForm.id 'jobId': this.dataForm.id
}) }).then(res => {
}).then(({data}) => { if (res && res.code === 0) {
if (data && data.code === 0) { this.dataList = res.page.list
this.dataList = data.page.list this.totalPage = res.page.totalCount
this.totalPage = data.page.totalCount
} else { } else {
this.dataList = [] this.dataList = []
this.totalPage = 0 this.totalPage = 0
@ -123,27 +78,23 @@
}) })
}, },
// //
sizeChangeHandle (val) { handleChangeSize (val) {
this.pageSize = val this.pageSize = val
this.pageIndex = 1 this.pageIndex = 1
this.getDataList() this.handleGetTableList()
}, },
// //
currentChangeHandle (val) { handleChangeCurrent (val) {
this.pageIndex = val this.pageIndex = val
this.getDataList() this.handleGetTableList()
}, },
// //
showErrorInfo (id) { handleShowErrorInfo (id) {
this.$http({ apiSysScheduleLogInfo({}, `/${id}`).then(res => {
url: this.$http.adornUrl(`/sys/scheduleLog/info/${id}`), if (res && res.code === 0) {
method: 'get', this.$alert(res.log.error)
params: this.$http.adornParams()
}).then(({data}) => {
if (data && data.code === 0) {
this.$alert(data.log.error)
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
} }

View File

@ -1,98 +1,53 @@
<template> <template>
<div class="mod-schedule"> <div class="mod-schedule">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="handleGetTableList()">
<el-form-item> <el-form-item>
<el-input v-model="dataForm.beanName" placeholder="bean名称" clearable></el-input> <el-input v-model="dataForm.beanName" placeholder="bean名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="handleGetTableList()">查询</el-button>
<el-button v-if="isAuth('sys:schedule:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> <el-button v-if="isAuth('sys:schedule:save')" type="primary" @click="handleAddOrUpdate()">新增</el-button>
<el-button v-if="isAuth('sys:schedule:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> <el-button v-if="isAuth('sys:schedule:delete')" type="danger" @click="handleDelete()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
<el-button v-if="isAuth('sys:schedule:pause')" type="danger" @click="pauseHandle()" :disabled="dataListSelections.length <= 0">批量暂停</el-button> <el-button v-if="isAuth('sys:schedule:pause')" type="danger" @click="handlePause()" :disabled="dataListSelections.length <= 0">批量暂停</el-button>
<el-button v-if="isAuth('sys:schedule:resume')" type="danger" @click="resumeHandle()" :disabled="dataListSelections.length <= 0">批量恢复</el-button> <el-button v-if="isAuth('sys:schedule:resume')" type="danger" @click="handleResume()" :disabled="dataListSelections.length <= 0">批量恢复</el-button>
<el-button v-if="isAuth('sys:schedule:run')" type="danger" @click="runHandle()" :disabled="dataListSelections.length <= 0">批量立即执行</el-button> <el-button v-if="isAuth('sys:schedule:run')" type="danger" @click="handleRun()" :disabled="dataListSelections.length <= 0">批量立即执行</el-button>
<el-button v-if="isAuth('sys:schedule:log')" type="success" @click="logHandle()">日志列表</el-button> <el-button v-if="isAuth('sys:schedule:log')" type="success" @click="handleLog()">日志列表</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table :data="dataList" border v-loading="dataListLoading" @selection-change="handleChangeSelection" style="width: 100%;">
:data="dataList" <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
border <el-table-column prop="jobId" header-align="center" align="center" width="80" label="ID"></el-table-column>
v-loading="dataListLoading" <el-table-column prop="beanName" header-align="center" align="center" label="bean名称"></el-table-column>
@selection-change="selectionChangeHandle" <el-table-column prop="params" header-align="center" align="center" label="参数"></el-table-column>
style="width: 100%;"> <el-table-column prop="cronExpression" header-align="center" align="center" label="cron表达式"></el-table-column>
<el-table-column <el-table-column prop="remark" header-align="center" align="center" label="备注"></el-table-column>
type="selection" <el-table-column prop="status" header-align="center" align="center" label="状态">
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="jobId"
header-align="center"
align="center"
width="80"
label="ID">
</el-table-column>
<el-table-column
prop="beanName"
header-align="center"
align="center"
label="bean名称">
</el-table-column>
<el-table-column
prop="params"
header-align="center"
align="center"
label="参数">
</el-table-column>
<el-table-column
prop="cronExpression"
header-align="center"
align="center"
label="cron表达式">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注">
</el-table-column>
<el-table-column
prop="status"
header-align="center"
align="center"
label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small">正常</el-tag> <el-tag v-if="scope.row.status === 0" size="small">正常</el-tag>
<el-tag v-else size="small" type="danger">暂停</el-tag> <el-tag v-else size="small" type="danger">暂停</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="isAuth('sys:schedule:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.jobId)">修改</el-button> <el-button v-if="isAuth('sys:schedule:update')" type="text" size="small" @click="handleAddOrUpdate(scope.row.jobId)">编辑</el-button>
<el-button v-if="isAuth('sys:schedule:delete')" type="text" size="small" @click="deleteHandle(scope.row.jobId)">删除</el-button> <el-button v-if="isAuth('sys:schedule:delete')" type="text" size="small" @click="handleDelete(scope.row.jobId)">删除</el-button>
<el-button v-if="isAuth('sys:schedule:pause')" type="text" size="small" @click="pauseHandle(scope.row.jobId)">暂停</el-button> <el-button v-if="isAuth('sys:schedule:pause')" type="text" size="small" @click="handlePause(scope.row.jobId)">暂停</el-button>
<el-button v-if="isAuth('sys:schedule:resume')" type="text" size="small" @click="resumeHandle(scope.row.jobId)">恢复</el-button> <el-button v-if="isAuth('sys:schedule:resume')" type="text" size="small" @click="handleResume(scope.row.jobId)">恢复</el-button>
<el-button v-if="isAuth('sys:schedule:run')" type="text" size="small" @click="runHandle(scope.row.jobId)">立即执行</el-button> <el-button v-if="isAuth('sys:schedule:run')" type="text" size="small" @click="handleRun(scope.row.jobId)">立即执行</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
@size-change="sizeChangeHandle" @size-change="handleChangeSize"
@current-change="currentChangeHandle" @current-change="handleChangeCurrent"
:current-page="pageIndex" :current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pageSize" :page-size="pageSize"
:total="totalPage" :total="totalPage"
layout="total, sizes, prev, pager, next, jumper"> layout="total, sizes, prev, pager, next, jumper">
</el-pagination> </el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 编辑 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="handleGetTableList"></add-or-update>
<!-- 弹窗, 日志列表 --> <!-- 弹窗, 日志列表 -->
<log v-if="logVisible" ref="log"></log> <log v-if="logVisible" ref="log"></log>
</div> </div>
@ -101,6 +56,8 @@
<script> <script>
import AddOrUpdate from './schedule-add-or-update' import AddOrUpdate from './schedule-add-or-update'
import Log from './schedule-log' import Log from './schedule-log'
import { apiSysScheduleList, apiSysScheduleDelete, apiSysSchedulePause, apiSysScheduleResume, apiSysScheduleRun } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -122,24 +79,19 @@
Log Log
}, },
activated () { activated () {
this.getDataList() this.handleGetTableList()
}, },
methods: { methods: {
// //
getDataList () { handleGetTableList () {
this.dataListLoading = true apiSysScheduleList({
this.$http({
url: this.$http.adornUrl('/sys/schedule/list'),
method: 'get',
params: this.$http.adornParams({
'page': this.pageIndex, 'page': this.pageIndex,
'limit': this.pageSize, 'limit': this.pageSize,
'beanName': this.dataForm.beanName 'beanName': this.dataForm.beanName
}) }).then(res => {
}).then(({data}) => { if (res && res.code === 0) {
if (data && data.code === 0) { this.dataList = res.page.list
this.dataList = data.page.list this.totalPage = res.page.totalCount
this.totalPage = data.page.totalCount
} else { } else {
this.dataList = [] this.dataList = []
this.totalPage = 0 this.totalPage = 0
@ -148,30 +100,30 @@
}) })
}, },
// //
sizeChangeHandle (val) { handleChangeSize (val) {
this.pageSize = val this.pageSize = val
this.pageIndex = 1 this.pageIndex = 1
this.getDataList() this.handleGetTableList()
}, },
// //
currentChangeHandle (val) { handleChangeCurrent (val) {
this.pageIndex = val this.pageIndex = val
this.getDataList() this.handleGetTableList()
}, },
// //
selectionChangeHandle (val) { handleChangeSelection (val) {
this.dataListSelections = val this.dataListSelections = val
}, },
// / // /
addOrUpdateHandle (id) { handleAddOrUpdate (id) {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id) this.$refs.addOrUpdate.init(id)
}) })
}, },
// //
deleteHandle (id) { handleDelete (id) {
var ids = id ? [id] : this.dataListSelections.map(item => { let ids = id ? [id] : this.dataListSelections.map(item => {
return item.jobId return item.jobId
}) })
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
@ -179,29 +131,25 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ apiSysScheduleDelete(ids).then(res => {
url: this.$http.adornUrl('/sys/schedule/delete'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.handleGetTableList()
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {}) }).catch(() => {})
}, },
// //
pauseHandle (id) { handlePause (id) {
var ids = id ? [id] : this.dataListSelections.map(item => { let ids = id ? [id] : this.dataListSelections.map(item => {
return item.jobId return item.jobId
}) })
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '暂停' : '批量暂停'}]操作?`, '提示', { this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '暂停' : '批量暂停'}]操作?`, '提示', {
@ -209,29 +157,25 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ apiSysSchedulePause(ids).then(res => {
url: this.$http.adornUrl('/sys/schedule/pause'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.handleGetTableList()
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {}) }).catch(() => {})
}, },
// //
resumeHandle (id) { handleResume (id) {
var ids = id ? [id] : this.dataListSelections.map(item => { let ids = id ? [id] : this.dataListSelections.map(item => {
return item.jobId return item.jobId
}) })
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '恢复' : '批量恢复'}]操作?`, '提示', { this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '恢复' : '批量恢复'}]操作?`, '提示', {
@ -239,28 +183,24 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ apiSysScheduleResume(ids).then(res => {
url: this.$http.adornUrl('/sys/schedule/resume'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.handleGetTableList()
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {}) }).catch(() => {})
}, },
// //
runHandle (id) { handleRun (id) {
var ids = id ? [id] : this.dataListSelections.map(item => { var ids = id ? [id] : this.dataListSelections.map(item => {
return item.jobId return item.jobId
}) })
@ -269,28 +209,24 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ apiSysScheduleRun(ids).then(res => {
url: this.$http.adornUrl('/sys/schedule/run'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.handleGetTableList()
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {}) }).catch(() => {})
}, },
// //
logHandle () { handleLog () {
this.logVisible = true this.logVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.log.init() this.$refs.log.init()

View File

@ -3,7 +3,7 @@
title="云存储配置" title="云存储配置"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible"> :visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="120px"> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="handleConfirm()" label-width="120px">
<el-form-item size="mini" label="存储类型"> <el-form-item size="mini" label="存储类型">
<el-radio-group v-model="dataForm.type"> <el-radio-group v-model="dataForm.type">
<el-radio :label="1">七牛</el-radio> <el-radio :label="1">七牛</el-radio>
@ -77,12 +77,14 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> <el-button type="primary" @click="handleConfirm()">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { apiSysOssConfig, apiSysOssSaveConfig } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -94,24 +96,16 @@
methods: { methods: {
init (id) { init (id) {
this.visible = true this.visible = true
this.$http({ apiSysOssConfig({}).then(res => {
url: this.$http.adornUrl('/sys/oss/config'), this.dataForm = res && res.code === 0 ? res.config : []
method: 'get',
params: this.$http.adornParams()
}).then(({data}) => {
this.dataForm = data && data.code === 0 ? data.config : []
}) })
}, },
// //
dataFormSubmit () { handleConfirm () {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
this.$http({ apiSysOssSaveConfig(this.dataForm).then(res => {
url: this.$http.adornUrl('/sys/oss/saveConfig'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(this.dataForm)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
@ -121,7 +115,7 @@
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
} }

View File

@ -2,13 +2,13 @@
<el-dialog <el-dialog
title="上传文件" title="上传文件"
:close-on-click-modal="false" :close-on-click-modal="false"
@close="closeHandle" @close="handleClose"
:visible.sync="visible"> :visible.sync="visible">
<el-upload <el-upload
drag drag
:action="url" :action="url"
:before-upload="beforeUploadHandle" :before-upload="handleBeforeUpload"
:on-success="successHandle" :on-success="handleSuccess"
multiple multiple
:file-list="fileList" :file-list="fileList"
style="text-align: center;"> style="text-align: center;">
@ -32,11 +32,11 @@
}, },
methods: { methods: {
init (id) { init (id) {
this.url = this.$http.adornUrl(`/sys/oss/upload?token=${this.$cookie.get('token')}`) this.url = `/lz_management/sys/oss/upload?token=${this.$cookie.get('token')}`
this.visible = true this.visible = true
}, },
// //
beforeUploadHandle (file) { handleBeforeUpload (file) {
if (file.type !== 'image/jpg' && file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') { if (file.type !== 'image/jpg' && file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') {
this.$message.error('只支持jpg、png、gif格式的图片') this.$message.error('只支持jpg、png、gif格式的图片')
return false return false
@ -44,7 +44,7 @@
this.num++ this.num++
}, },
// //
successHandle (response, file, fileList) { handleSuccess (response, file, fileList) {
this.fileList = fileList this.fileList = fileList
this.successNum++ this.successNum++
if (response && response.code === 0) { if (response && response.code === 0) {
@ -62,7 +62,7 @@
} }
}, },
// //
closeHandle () { handleClose () {
this.fileList = [] this.fileList = []
this.$emit('refreshDataList') this.$emit('refreshDataList')
} }

View File

@ -2,57 +2,25 @@
<div class="mod-oss"> <div class="mod-oss">
<el-form :inline="true" :model="dataForm"> <el-form :inline="true" :model="dataForm">
<el-form-item> <el-form-item>
<el-button type="primary" @click="configHandle()">云存储配置</el-button> <el-button type="primary" @click="handleConfig()">云存储配置</el-button>
<el-button type="primary" @click="uploadHandle()">上传文件</el-button> <el-button type="primary" @click="handleUpload()">上传文件</el-button>
<el-button type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> <el-button type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table :data="dataList" border v-loading="dataListLoading" @selection-change="handleChangeSelection" style="width: 100%;">
:data="dataList" <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
border <el-table-column prop="id" header-align="center" align="center" width="80" label="ID"></el-table-column>
v-loading="dataListLoading" <el-table-column prop="url" header-align="center" align="center" label="URL地址"></el-table-column>
@selection-change="selectionChangeHandle" <el-table-column prop="createDate" header-align="center" align="center" width="180" label="创建时间"></el-table-column>
style="width: 100%;"> <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
<el-table-column
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="id"
header-align="center"
align="center"
width="80"
label="ID">
</el-table-column>
<el-table-column
prop="url"
header-align="center"
align="center"
label="URL地址">
</el-table-column>
<el-table-column
prop="createDate"
header-align="center"
align="center"
width="180"
label="创建时间">
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button> <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
@size-change="sizeChangeHandle" @size-change="handleChangeSize"
@current-change="currentChangeHandle" @current-change="handleChangeCurrent"
:current-page="pageIndex" :current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pageSize" :page-size="pageSize"
@ -62,13 +30,15 @@
<!-- 弹窗, 云存储配置 --> <!-- 弹窗, 云存储配置 -->
<config v-if="configVisible" ref="config"></config> <config v-if="configVisible" ref="config"></config>
<!-- 弹窗, 上传文件 --> <!-- 弹窗, 上传文件 -->
<upload v-if="uploadVisible" ref="upload" @refreshDataList="getDataList"></upload> <upload v-if="uploadVisible" ref="upload" @refreshDataList="handleGetTableList"></upload>
</div> </div>
</template> </template>
<script> <script>
import Config from './oss-config' import Config from './oss-config'
import Upload from './oss-upload' import Upload from './oss-upload'
import { apiSysOssList, apiSysOssDelete } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -88,23 +58,18 @@
Upload Upload
}, },
activated () { activated () {
this.getDataList() this.handleGetTableList()
}, },
methods: { methods: {
// //
getDataList () { handleGetTableList () {
this.dataListLoading = true apiSysOssList({
this.$http({
url: this.$http.adornUrl('/sys/oss/list'),
method: 'get',
params: this.$http.adornParams({
'page': this.pageIndex, 'page': this.pageIndex,
'limit': this.pageSize 'limit': this.pageSize
}) }).then(res => {
}).then(({data}) => { if (res && res.code === 0) {
if (data && data.code === 0) { this.dataList = res.page.list
this.dataList = data.page.list this.totalPage = res.page.totalCount
this.totalPage = data.page.totalCount
} else { } else {
this.dataList = [] this.dataList = []
this.totalPage = 0 this.totalPage = 0
@ -113,29 +78,29 @@
}) })
}, },
// //
sizeChangeHandle (val) { handleChangeSize (val) {
this.pageSize = val this.pageSize = val
this.pageIndex = 1 this.pageIndex = 1
this.getDataList() this.handleGetTableList()
}, },
// //
currentChangeHandle (val) { handleChangeCurrent (val) {
this.pageIndex = val this.pageIndex = val
this.getDataList() this.handleGetTableList()
}, },
// //
selectionChangeHandle (val) { handleChangeSelection (val) {
this.dataListSelections = val this.dataListSelections = val
}, },
// //
configHandle () { handleConfig () {
this.configVisible = true this.configVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.config.init() this.$refs.config.init()
}) })
}, },
// //
uploadHandle () { handleUpload () {
this.uploadVisible = true this.uploadVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.upload.init() this.$refs.upload.init()
@ -143,7 +108,7 @@
}, },
// //
deleteHandle (id) { deleteHandle (id) {
var ids = id ? [id] : this.dataListSelections.map(item => { let ids = id ? [id] : this.dataListSelections.map(item => {
return item.id return item.id
}) })
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
@ -151,22 +116,18 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ apiSysOssDelete(ids).then(res => {
url: this.$http.adornUrl('/sys/oss/delete'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.handleGetTableList()
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {}) }).catch(() => {})

View File

@ -1,9 +1,9 @@
<template> <template>
<el-dialog <el-dialog
:title="!dataForm.id ? '新增' : '修改'" :title="!dataForm.id ? '新增' : '编辑'"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible"> :visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px"> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="handleConfirm()" label-width="80px">
<el-form-item label="参数名" prop="paramKey"> <el-form-item label="参数名" prop="paramKey">
<el-input v-model="dataForm.paramKey" placeholder="参数名"></el-input> <el-input v-model="dataForm.paramKey" placeholder="参数名"></el-input>
</el-form-item> </el-form-item>
@ -16,12 +16,14 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> <el-button type="primary" @click="handleConfirm()">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { apiSysConfigInfo, apiSysConfigConfirm } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -33,51 +35,44 @@
remark: '' remark: ''
}, },
dataRule: { dataRule: {
paramKey: [ paramKey: [{ required: true, message: '参数名不能为空', trigger: 'blur' }],
{ required: true, message: '参数名不能为空', trigger: 'blur' } paramValue: [{ required: true, message: '参数值不能为空', trigger: 'blur' }]
], },
paramValue: [ apiType: '' // api
{ required: true, message: '参数值不能为空', trigger: 'blur' }
]
}
} }
}, },
methods: { methods: {
init (id) { init (id) {
this.dataForm.id = id || 0
this.visible = true this.visible = true
this.$nextTick(() => { if (id) {
this.$refs['dataForm'].resetFields() this.dataForm.id = id || 0
if (this.dataForm.id) { this.handleEdit()
this.$http({ this.apiType = '/update'
url: this.$http.adornUrl(`/sys/config/info/${this.dataForm.id}`), } else {
method: 'get', this.apiType = '/save'
params: this.$http.adornParams()
}).then(({data}) => {
if (data && data.code === 0) {
this.dataForm.paramKey = data.config.paramKey
this.dataForm.paramValue = data.config.paramValue
this.dataForm.remark = data.config.remark
} }
}) },
handleEdit () {
apiSysConfigInfo({}, `/${this.dataForm.id}`).then(res => {
if (res && res.code === 0) {
this.dataForm.paramKey = res.config.paramKey
this.dataForm.paramValue = res.config.paramValue
this.dataForm.remark = res.config.remark
} }
}) })
}, },
// //
dataFormSubmit () { handleConfirm () {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
this.$http({ let params = {
url: this.$http.adornUrl(`/sys/config/${!this.dataForm.id ? 'save' : 'update'}`),
method: 'post',
data: this.$http.adornData({
'id': this.dataForm.id || undefined, 'id': this.dataForm.id || undefined,
'paramKey': this.dataForm.paramKey, 'paramKey': this.dataForm.paramKey,
'paramValue': this.dataForm.paramValue, 'paramValue': this.dataForm.paramValue,
'remark': this.dataForm.remark 'remark': this.dataForm.remark
}) }
}).then(({data}) => { apiSysConfigConfirm(params, this.apiType).then(res => {
if (data && data.code === 0) { if (res && res.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
@ -88,7 +83,7 @@
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
} }

View File

@ -1,67 +1,31 @@
<template> <template>
<div class="mod-config"> <div class="mod-config">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="handleGetTableList()">
<el-form-item> <el-form-item>
<el-input v-model="dataForm.paramKey" placeholder="参数名" clearable></el-input> <el-input v-model="dataForm.paramKey" placeholder="参数名" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="handleGetTableList()">查询</el-button>
<el-button type="primary" @click="addOrUpdateHandle()">新增</el-button> <el-button type="primary" @click="handleAddOrUpdate()">新增</el-button>
<el-button type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> <el-button type="danger" @click="handleDelete()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table :data="dataList" border v-loading="dataListLoading" @selection-change="handleSelectionChange" style="width: 100%;">
:data="dataList" <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
border <el-table-column prop="id" header-align="center" align="center" width="80" label="ID"></el-table-column>
v-loading="dataListLoading" <el-table-column prop="paramKey" header-align="center" align="center" label="参数名"></el-table-column>
@selection-change="selectionChangeHandle" <el-table-column prop="paramValue" header-align="center" align="center" label="参数值"></el-table-column>
style="width: 100%;"> <el-table-column prop="remark" header-align="center" align="center" label="备注"></el-table-column>
<el-table-column <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="id"
header-align="center"
align="center"
width="80"
label="ID">
</el-table-column>
<el-table-column
prop="paramKey"
header-align="center"
align="center"
label="参数名">
</el-table-column>
<el-table-column
prop="paramValue"
header-align="center"
align="center"
label="参数值">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注">
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button> <el-button type="text" size="small" @click="handleAddOrUpdate(scope.row.id)">编辑</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button> <el-button type="text" size="small" @click="handleDelete(scope.row.id)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
@size-change="sizeChangeHandle" @size-change="handleSizeChange"
@current-change="currentChangeHandle" @current-change="handleCurrentChange"
:current-page="pageIndex" :current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pageSize" :page-size="pageSize"
@ -69,12 +33,14 @@
layout="total, sizes, prev, pager, next, jumper"> layout="total, sizes, prev, pager, next, jumper">
</el-pagination> </el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="handleGetTableList"></add-or-update>
</div> </div>
</template> </template>
<script> <script>
import AddOrUpdate from './config-add-or-update' import AddOrUpdate from './config-add-or-update'
import { apiSysConfigList, apiSysConfigDelete } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -94,24 +60,19 @@
AddOrUpdate AddOrUpdate
}, },
activated () { activated () {
this.getDataList() this.handleGetTableList()
}, },
methods: { methods: {
// //
getDataList () { handleGetTableList () {
this.dataListLoading = true apiSysConfigList({
this.$http({
url: this.$http.adornUrl('/sys/config/list'),
method: 'get',
params: this.$http.adornParams({
'page': this.pageIndex, 'page': this.pageIndex,
'limit': this.pageSize, 'limit': this.pageSize,
'paramKey': this.dataForm.paramKey 'paramKey': this.dataForm.paramKey
}) }).then(res => {
}).then(({data}) => { if (res && res.code === 0) {
if (data && data.code === 0) { this.dataList = res.page.list
this.dataList = data.page.list this.totalPage = res.page.totalCount
this.totalPage = data.page.totalCount
} else { } else {
this.dataList = [] this.dataList = []
this.totalPage = 0 this.totalPage = 0
@ -120,30 +81,30 @@
}) })
}, },
// //
sizeChangeHandle (val) { handleSizeChange (val) {
this.pageSize = val this.pageSize = val
this.pageIndex = 1 this.pageIndex = 1
this.getDataList() this.handleGetTableList()
}, },
// //
currentChangeHandle (val) { handleCurrentChange (val) {
this.pageIndex = val this.pageIndex = val
this.getDataList() this.handleGetTableList()
}, },
// //
selectionChangeHandle (val) { handleSelectionChange (val) {
this.dataListSelections = val this.dataListSelections = val
}, },
// / // /
addOrUpdateHandle (id) { handleAddOrUpdate (id) {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id) this.$refs.addOrUpdate.init(id)
}) })
}, },
// //
deleteHandle (id) { handleDelete (id) {
var ids = id ? [id] : this.dataListSelections.map(item => { let ids = id ? [id] : this.dataListSelections.map(item => {
return item.id return item.id
}) })
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
@ -151,22 +112,18 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ apiSysConfigDelete(ids).then(res => {
url: this.$http.adornUrl('/sys/config/delete'), if (res && res.code === 0) {
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.handleGetTableList()
} }
}) })
} else { } else {
this.$message.error(data.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {}) }).catch(() => {})

View File

@ -1,77 +1,26 @@
<template> <template>
<div class="mod-log"> <div class="mod-log">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="handleGetTableList()">
<el-form-item> <el-form-item>
<el-input v-model="dataForm.key" placeholder="用户名/用户操作" clearable></el-input> <el-input v-model="dataForm.key" placeholder="用户名/用户操作" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="handleGetTableList()">查询</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table :data="dataList" border v-loading="dataListLoading" style="width: 100%">
:data="dataList" <el-table-column prop="id" header-align="center" align="center" width="80" label="ID"></el-table-column>
border <el-table-column prop="username" header-align="center" align="center" label="用户名"></el-table-column>
v-loading="dataListLoading" <el-table-column prop="operation" header-align="center" align="center" label="用户操作"></el-table-column>
style="width: 100%"> <el-table-column prop="method" header-align="center" align="center" width="150" :show-overflow-tooltip="true" label="请求方法"></el-table-column>
<el-table-column <el-table-column prop="params" header-align="center" align="center" width="150" :show-overflow-tooltip="true" label="请求参数"></el-table-column>
prop="id" <el-table-column prop="time" header-align="center" align="center" label="执行时长(毫秒)"></el-table-column>
header-align="center" <el-table-column prop="ip" header-align="center" align="center" width="150" label="IP地址"></el-table-column>
align="center" <el-table-column prop="createDate" header-align="center" align="center" width="180" label="创建时间"></el-table-column>
width="80"
label="ID">
</el-table-column>
<el-table-column
prop="username"
header-align="center"
align="center"
label="用户名">
</el-table-column>
<el-table-column
prop="operation"
header-align="center"
align="center"
label="用户操作">
</el-table-column>
<el-table-column
prop="method"
header-align="center"
align="center"
width="150"
:show-overflow-tooltip="true"
label="请求方法">
</el-table-column>
<el-table-column
prop="params"
header-align="center"
align="center"
width="150"
:show-overflow-tooltip="true"
label="请求参数">
</el-table-column>
<el-table-column
prop="time"
header-align="center"
align="center"
label="执行时长(毫秒)">
</el-table-column>
<el-table-column
prop="ip"
header-align="center"
align="center"
width="150"
label="IP地址">
</el-table-column>
<el-table-column
prop="createDate"
header-align="center"
align="center"
width="180"
label="创建时间">
</el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
@size-change="sizeChangeHandle" @size-change="handleSizeChange"
@current-change="currentChangeHandle" @current-change="handleCurrentChange"
:current-page="pageIndex" :current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="pageSize" :page-size="pageSize"
@ -82,6 +31,8 @@
</template> </template>
<script> <script>
import { apiSysLogList } from '@/api/api_sys'
export default { export default {
data () { data () {
return { return {
@ -97,24 +48,19 @@
} }
}, },
created () { created () {
this.getDataList() this.handleGetTableList()
}, },
methods: { methods: {
// //
getDataList () { handleGetTableList () {
this.dataListLoading = true apiSysLogList({
this.$http({
url: this.$http.adornUrl('/sys/log/list'),
method: 'get',
params: this.$http.adornParams({
'page': this.pageIndex, 'page': this.pageIndex,
'limit': this.pageSize, 'limit': this.pageSize,
'key': this.dataForm.key 'key': this.dataForm.key
}) }).then(res => {
}).then(({data}) => { if (res && res.code === 0) {
if (data && data.code === 0) { this.dataList = res.page.list
this.dataList = data.page.list this.totalPage = res.page.totalCount
this.totalPage = data.page.totalCount
} else { } else {
this.dataList = [] this.dataList = []
this.totalPage = 0 this.totalPage = 0
@ -123,15 +69,15 @@
}) })
}, },
// //
sizeChangeHandle (val) { handleSizeChange (val) {
this.pageSize = val this.pageSize = val
this.pageIndex = 1 this.pageIndex = 1
this.getDataList() this.handleGetTableList()
}, },
// //
currentChangeHandle (val) { handleCurrentChange (val) {
this.pageIndex = val this.pageIndex = val
this.getDataList() this.handleGetTableList()
} }
} }
} }