szh_zidingyibiaoti
张同海 2 years ago
parent eff1e82cfa
commit e56a354320

@ -1,39 +1,87 @@
<template>
<div>
<x-card v-if="hasPerm('sysConfig:page')">
<div slot="content" class="table-page-search-wrapper" >
<a-form layout="inline">
<div slot="content" class="table-page-search-wrapper">
<!-- <a-form layout="inline">
<a-row :gutter="48">
<a-col :md="8" :sm="24">
<a-form-item label="参数名称">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入参数名称"/>
<a-input v-model="queryParam.name" allow-clear placeholder="请输入参数名称" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="唯一编码">
<a-input v-model="queryParam.code" allow-clear placeholder="请输入唯一编码"/>
<a-input v-model="queryParam.code" allow-clear placeholder="请输入唯一编码" />
</a-form-item>
</a-col>
<template v-if="advanced">
<a-col :md="8" :sm="24">
<a-form-item label="所属分类">
<a-select v-model="queryParam.groupCode" placeholder="请选择所属分类" allow-clear>
<a-select-option v-for="(item,index) in groupCodeDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
<a-select-option
v-for="(item, index) in groupCodeDictTypeDropDown"
:key="index"
:value="item.code"
>{{ item.value }}</a-select-option
>
</a-select>
</a-form-item>
</a-col>
</template>
<a-col :md="!advanced && 8 || 24" :sm="24" >
<span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
<a-button type="primary" @click="$refs.table.refresh(true)" >查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
<a-col :md="(!advanced && 8) || 24" :sm="24">
<span
class="table-page-search-submitButtons"
:style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
>
<a-button type="primary" @click="$refs.table.refresh(true)"></a-button>
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
<a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'"/>
<a-icon :type="advanced ? 'up' : 'down'" />
</a>
</span>
</a-col>
</a-row>
</a-form> -->
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="20">
<a-row :gutter="48">
<a-col :md="6" :sm="24">
<a-form-item label="参数名称">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入参数名称" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="唯一编码">
<a-input v-model="queryParam.code" allow-clear placeholder="请输入唯一编码" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="所属分类">
<a-select v-model="queryParam.groupCode" placeholder="请选择所属分类" allow-clear>
<a-select-option
v-for="(item, index) in groupCodeDictTypeDropDown"
:key="index"
:value="item.code"
>{{ item.value }}</a-select-option
>
</a-select>
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :md="4" :sm="24" :labelCol="{ span: 2, offset: 12 }">
<span class="table-page-search-submitButtons" style="text-align: right">
<a-button type="primary" @click="$refs.table.refresh(true)"></a-button>
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
<!-- <a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'" />
</a> -->
</span>
</a-col>
</a-row>
</a-form>
</div>
</x-card>
@ -43,11 +91,13 @@
:columns="columns"
:data="loadData"
:alert="true"
:rowKey="(record) => record.id"
:rowKey="record => record.id"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
>
<template slot="operator" v-if="hasPerm('sysConfig:add')">
<a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysConfig:add')"></a-button>
<a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysConfig:add')"
>新增配置</a-button
>
</template>
<span slot="name" slot-scope="text">
<ellipsis :length="20" tooltip>{{ text }}</ellipsis>
@ -66,136 +116,143 @@
</span>
<span slot="action" slot-scope="text, record">
<a v-if="hasPerm('sysConfig:edit')" @click="$refs.editForm.edit(record)"></a>
<a-divider type="vertical" v-if="hasPerm('sysConfig:edit') & hasPerm('sysConfig:delete')"/>
<a-popconfirm v-if="hasPerm('sysConfig:delete')" placement="topRight" title="确认删除?" @confirm="() => sysConfigDelete(record)">
<a-divider type="vertical" v-if="hasPerm('sysConfig:edit') & hasPerm('sysConfig:delete')" />
<a-popconfirm
v-if="hasPerm('sysConfig:delete')"
placement="topRight"
title="确认删除?"
@confirm="() => sysConfigDelete(record)"
>
<a>删除</a>
</a-popconfirm>
</span>
</s-table>
<add-form ref="addForm" @ok="handleOk" v-if="hasPerm('sysConfig:add')"/>
<edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('sysConfig:edit')"/>
<add-form ref="addForm" @ok="handleOk" v-if="hasPerm('sysConfig:add')" />
<edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('sysConfig:edit')" />
</a-card>
</div>
</template>
<script>
import { STable, Ellipsis, XCard } from '@/components'
import { sysConfigPage, sysConfigDelete } from '@/api/modular/system/configManage'
import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
import addForm from './addForm'
import editForm from './editForm'
export default {
components: {
XCard,
STable,
Ellipsis,
addForm,
editForm
},
data () {
return {
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '参数名称',
dataIndex: 'name',
scopedSlots: { customRender: 'name' }
},
{
title: '唯一编码',
dataIndex: 'code',
scopedSlots: { customRender: 'code' }
},
{
title: '参数值',
dataIndex: 'value',
scopedSlots: { customRender: 'value' }
},
{
title: '所属分类',
dataIndex: 'groupCode',
scopedSlots: { customRender: 'groupCode' }
},
{
title: '备注',
dataIndex: 'remark',
scopedSlots: { customRender: 'remark' }
}
],
// Promise
loadData: parameter => {
return sysConfigPage(Object.assign(parameter, this.queryParam)).then((res) => {
return res.data
})
import { STable, Ellipsis, XCard } from '@/components'
import { sysConfigPage, sysConfigDelete } from '@/api/modular/system/configManage'
import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
import addForm from './addForm'
import editForm from './editForm'
export default {
components: {
XCard,
STable,
Ellipsis,
addForm,
editForm
},
data() {
return {
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '参数名称',
dataIndex: 'name',
scopedSlots: { customRender: 'name' }
},
selectedRowKeys: [],
selectedRows: [],
groupCodeDictTypeDropDown: []
}
},
{
title: '唯一编码',
dataIndex: 'code',
scopedSlots: { customRender: 'code' }
},
{
title: '参数值',
dataIndex: 'value',
scopedSlots: { customRender: 'value' }
},
{
title: '所属分类',
dataIndex: 'groupCode',
scopedSlots: { customRender: 'groupCode' }
},
{
title: '备注',
dataIndex: 'remark',
scopedSlots: { customRender: 'remark' }
}
],
// Promise
loadData: parameter => {
return sysConfigPage(Object.assign(parameter, this.queryParam)).then(res => {
return res.data
})
},
selectedRowKeys: [],
selectedRows: [],
groupCodeDictTypeDropDown: []
}
},
/**
* 初始化判断按钮权限是否拥有没有则不现实列
*/
created() {
this.sysDictTypeDropDown()
if (this.hasPerm('sysConfig:edit') || this.hasPerm('sysConfig:delete')) {
this.columns.push({
title: '操作',
width: '150px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
})
}
},
methods: {
/**
* 初始化判断按钮权限是否拥有没有则不现实列
* 获取字典数据
*/
created () {
this.sysDictTypeDropDown()
if (this.hasPerm('sysConfig:edit') || this.hasPerm('sysConfig:delete')) {
this.columns.push({
title: '操作',
width: '150px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
})
sysDictTypeDropDown() {
sysDictTypeDropDown({ code: 'consts_type' }).then(res => {
this.groupCodeDictTypeDropDown = res.data
})
},
groupCodeFilter(groupCode) {
// eslint-disable-next-line eqeqeq
const values = this.groupCodeDictTypeDropDown.filter(item => item.code == groupCode)
if (values.length > 0) {
return values[0].value
}
},
methods: {
/**
* 获取字典数据
*/
sysDictTypeDropDown () {
sysDictTypeDropDown({ code: 'consts_type' }).then((res) => {
this.groupCodeDictTypeDropDown = res.data
})
},
groupCodeFilter (groupCode) {
// eslint-disable-next-line eqeqeq
const values = this.groupCodeDictTypeDropDown.filter(item => item.code == groupCode)
if (values.length > 0) {
return values[0].value
}
},
sysConfigDelete (record) {
sysConfigDelete(record).then((res) => {
sysConfigDelete(record) {
sysConfigDelete(record)
.then(res => {
if (res.success) {
this.$message.success('删除成功')
this.$refs.table.refresh()
} else {
this.$message.error('删除失败:' + res.message)
}
}).catch((err) => {
})
.catch(err => {
this.$message.error('删除错误:' + err.message)
})
},
toggleAdvanced () {
this.advanced = !this.advanced
},
handleOk () {
this.$refs.table.refresh()
},
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
}
},
toggleAdvanced() {
this.advanced = !this.advanced
},
handleOk() {
this.$refs.table.refresh()
},
onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
}
}
}
</script>
<style lang="less">
.table-operator {
margin-bottom: 18px;
}
button {
margin-right: 8px;
}
.table-operator {
margin-bottom: 18px;
}
button {
margin-right: 8px;
}
</style>

@ -4,51 +4,60 @@
<div slot="content" class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="8" :sm="24">
<a-form-item label="类名">
<a-input v-model="queryParam.className" allow-clear placeholder="请输入类名" />
</a-form-item>
<a-col :md="20">
<a-row :gutter="48">
<a-col :md="6" :sm="24">
<a-form-item label="类名">
<a-input v-model="queryParam.className" allow-clear placeholder="请输入类名" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="方法名">
<a-input v-model="queryParam.methodName" allow-clear placeholder="请输入方法名" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="异常信息">
<a-input v-model="queryParam.exceptionMsg" allow-clear placeholder="请输入异常信息关键字" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="姓名">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入操作人姓名" />
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="方法名">
<a-input v-model="queryParam.methodName" allow-clear placeholder="请输入方法名" />
</a-form-item>
</a-col>
<template v-if="advanced">
<a-col :md="8" :sm="24">
<a-form-item label="异常信息">
<a-input v-model="queryParam.exceptionMsg" allow-clear placeholder="请输入异常信息关键字" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="姓名">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入操作人姓名" />
</a-form-item>
</a-col>
<a-col :md="10" :sm="24">
<a-form-item label="操作时间">
<a-range-picker
v-model="queryParam.dates"
:show-time="{
hideDisabledOptions: true,
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')],
}"
format="YYYY-MM-DD HH:mm:ss" />
</a-form-item>
</a-col>
</template>
<a-col :md="!advanced && 8 || 24" :sm="24">
<span
class="table-page-search-submitButtons"
:style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
<a-col :md="4" :sm="24" :labelCol="{ span: 2, offset: 12 }">
<span class="table-page-search-submitButtons" style="text-align: right">
<a-button type="primary" @click="$refs.table.refresh(true)"></a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
<a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'" />
</a>
</span>
</a-col>
<template v-if="advanced">
<a-col :md="20">
<a-row :gutter="48">
<a-col :md="6" :sm="24">
<a-form-item label="操作时间">
<a-range-picker
v-model="queryParam.dates"
:show-time="{
hideDisabledOptions: true,
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')]
}"
format="YYYY-MM-DD HH:mm:ss"
:style="{ width: '100%' }"
/>
</a-form-item>
</a-col>
</a-row>
</a-col>
</template>
</a-row>
</a-form>
</div>
@ -59,8 +68,9 @@
:columns="columns"
:data="loadData"
:alert="true"
:rowKey="(record) => record.id"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
:rowKey="record => record.id"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
>
<template slot="operator" v-if="hasPerm('sysExLog:delete')">
<a-popconfirm @confirm="() => sysExLogDelete()" placement="top" title="确认清空日志?">
<a-button>清空日志</a-button>
@ -92,138 +102,132 @@
</div>
</template>
<script>
import {
import { STable, Ellipsis, XCard } from '@/components'
import { sysExLogPage, sysExLogDelete } from '@/api/modular/system/logManage'
import detailsExlog from './details'
import moment from 'moment'
export default {
components: {
XCard,
STable,
Ellipsis,
XCard
} from '@/components'
import {
sysExLogPage,
sysExLogDelete
} from '@/api/modular/system/logManage'
import detailsExlog from './details'
import moment from 'moment'
export default {
components: {
XCard,
STable,
Ellipsis,
detailsExlog
},
data() {
return {
advanced: false,
//
queryParam: {},
//
columns: [{
title: '类名',
dataIndex: 'className',
scopedSlots: {
customRender: 'className'
}
},
{
title: '方法名',
dataIndex: 'methodName',
scopedSlots: {
customRender: 'methodName'
}
},
{
title: '异常名称',
dataIndex: 'exceptionName',
scopedSlots: {
customRender: 'exceptionName'
}
},
{
title: '异常信息',
dataIndex: 'exceptionMsg',
scopedSlots: {
customRender: 'exceptionMsg'
}
},
{
title: '异常时间',
dataIndex: 'exceptionTime',
scopedSlots: {
customRender: 'exceptionTime'
}
},
{
title: '操作人',
dataIndex: 'name'
},
{
title: '详情',
dataIndex: 'action',
width: '150px',
scopedSlots: {
customRender: 'action'
}
detailsExlog
},
data() {
return {
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '类名',
dataIndex: 'className',
scopedSlots: {
customRender: 'className'
}
],
// Promise
loadData: parameter => {
return sysExLogPage(Object.assign(parameter, this.switchingDate())).then((res) => {
return res.data
})
},
selectedRowKeys: [],
selectedRows: [],
defaultExpandedKeys: []
}
},
created() {},
methods: {
moment,
/**
* 查询参数组装
*/
switchingDate() {
const dates = this.queryParam.dates
if (dates != null) {
this.queryParam.searchBeginTime = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss')
this.queryParam.searchEndTime = moment(dates[1]).format('YYYY-MM-DD HH:mm:ss')
if (dates.length < 1) {
delete this.queryParam.searchBeginTime
delete this.queryParam.searchEndTime
{
title: '方法名',
dataIndex: 'methodName',
scopedSlots: {
customRender: 'methodName'
}
}
const obj = JSON.parse(JSON.stringify(this.queryParam))
delete obj.dates
return obj
},
/**
* 清空日志
*/
sysExLogDelete() {
sysExLogDelete().then((res) => {
if (res.success) {
this.$message.success('清空成功')
this.$refs.table.refresh(true)
} else {
this.$message.error('清空失败:' + res.message)
},
{
title: '异常名称',
dataIndex: 'exceptionName',
scopedSlots: {
customRender: 'exceptionName'
}
},
{
title: '异常信息',
dataIndex: 'exceptionMsg',
scopedSlots: {
customRender: 'exceptionMsg'
}
},
{
title: '异常时间',
dataIndex: 'exceptionTime',
scopedSlots: {
customRender: 'exceptionTime'
}
},
{
title: '操作人',
dataIndex: 'name'
},
{
title: '详情',
dataIndex: 'action',
width: '150px',
scopedSlots: {
customRender: 'action'
}
}
],
// Promise
loadData: parameter => {
return sysExLogPage(Object.assign(parameter, this.switchingDate())).then(res => {
return res.data
})
},
toggleAdvanced() {
this.advanced = !this.advanced
},
onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
selectedRowKeys: [],
selectedRows: [],
defaultExpandedKeys: []
}
},
created() {},
methods: {
moment,
/**
* 查询参数组装
*/
switchingDate() {
const dates = this.queryParam.dates
if (dates != null) {
this.queryParam.searchBeginTime = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss')
this.queryParam.searchEndTime = moment(dates[1]).format('YYYY-MM-DD HH:mm:ss')
if (dates.length < 1) {
delete this.queryParam.searchBeginTime
delete this.queryParam.searchEndTime
}
}
const obj = JSON.parse(JSON.stringify(this.queryParam))
delete obj.dates
return obj
},
/**
* 清空日志
*/
sysExLogDelete() {
sysExLogDelete().then(res => {
if (res.success) {
this.$message.success('清空成功')
this.$refs.table.refresh(true)
} else {
this.$message.error('清空失败:' + res.message)
}
})
},
toggleAdvanced() {
this.advanced = !this.advanced
},
onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
}
}
}
</script>
<style lang="less">
.table-operator {
margin-bottom: 18px;
}
.table-operator {
margin-bottom: 18px;
}
button {
margin-right: 8px;
}
button {
margin-right: 8px;
}
</style>

@ -4,54 +4,44 @@
<div slot="content" class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="8" :sm="24">
<a-form-item label="操作人名称">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入操作人名称" />
</a-form-item>
<a-col :md="20">
<a-row :gutter="48">
<a-col :md="6" :sm="24">
<a-form-item label="操作人名称">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入操作人名称" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="请求方式">
<a-input v-model="queryParam.reqMethod" allow-clear placeholder="请求方式" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="是否成功">
<a-select v-model="queryParam.success" placeholder="请选择是否成功">
<a-select-option v-for="(item, index) in successDict" :key="index" :value="item.code">
{{ item.value }}</a-select-option
>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="操作时间">
<a-range-picker
v-model="queryParam.dates"
:show-time="{
hideDisabledOptions: true,
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')]
}"
format="YYYY-MM-DD HH:mm:ss"
:style="{ width: '100%' }"
/>
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="请求方式">
<a-input v-model="queryParam.reqMethod" allow-clear placeholder="请求方式" />
</a-form-item>
</a-col>
<template v-if="advanced">
<a-col :md="8" :sm="24">
<a-form-item label="是否成功">
<a-select v-model="queryParam.success" placeholder="请选择是否成功">
<a-select-option v-for="(item, index) in successDict" :key="index" :value="item.code">
{{ item.value }}</a-select-option
>
</a-select>
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="操作时间">
<a-range-picker
v-model="queryParam.dates"
:show-time="{
hideDisabledOptions: true,
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')]
}"
format="YYYY-MM-DD HH:mm:ss"
/>
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="url">
<a-input v-model="queryParam.url" allow-clear placeholder="url" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="ip">
<a-input v-model="queryParam.ip" allow-clear placeholder="ip" />
</a-form-item>
</a-col>
</template>
<a-col :md="(!advanced && 8) || 24" :sm="24">
<span
class="table-page-search-submitButtons"
:style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
>
<a-col :md="4" :sm="24" :labelCol="{ span: 2, offset: 12 }">
<span class="table-page-search-submitButtons" style="text-align: right">
<a-button type="primary" @click="$refs.table.refresh(true)"></a-button>
<a-button
style="margin-left: 8px"
@ -69,6 +59,22 @@
</a>
</span>
</a-col>
<template v-if="advanced">
<a-col :md="20">
<a-row :gutter="48">
<a-col :md="6" :sm="24">
<a-form-item label="url">
<a-input v-model="queryParam.url" allow-clear placeholder="url" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="ip">
<a-input v-model="queryParam.ip" allow-clear placeholder="ip" />
</a-form-item>
</a-col>
</a-row>
</a-col>
</template>
</a-row>
</a-form>
</div>

@ -4,50 +4,55 @@
<div slot="content" class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="8" :sm="24">
<a-form-item label="日志名称">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入日志名称" />
</a-form-item>
<a-col :md="20">
<a-row :gutter="48">
<a-col :md="6" :sm="24">
<a-form-item label="日志名称">
<a-input v-model="queryParam.name" allow-clear placeholder="请输入日志名称" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="访问类型">
<a-select v-model="queryParam.visType" allow-clear placeholder="请选择访问类型">
<a-select-option v-for="(item, index) in visTypeDict" :key="index" :value="item.code"
>{{ item.value }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="是否成功">
<a-select v-model="queryParam.success" placeholder="请选择是否成功">
<a-select-option v-for="(item, index) in successDict" :key="index" :value="item.code">
{{ item.value }}</a-select-option
>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="24">
<a-form-item label="访问时间">
<a-range-picker
v-model="queryParam.dates"
:show-time="{
hideDisabledOptions: true,
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')]
}"
format="YYYY-MM-DD HH:mm:ss"
:style="{ width: '100%' }"
/>
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="访问类型">
<a-select v-model="queryParam.visType" allow-clear placeholder="请选择访问类型">
<a-select-option v-for="(item,index) in visTypeDict" :key="index" :value="item.code">{{ item.value }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<template v-if="advanced">
<a-col :md="8" :sm="24">
<a-form-item label="是否成功">
<a-select v-model="queryParam.success" placeholder="请选择是否成功">
<a-select-option v-for="(item,index) in successDict" :key="index" :value="item.code">
{{ item.value }}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="10" :sm="24">
<a-form-item label="访问时间">
<a-range-picker
v-model="queryParam.dates"
:show-time="{
hideDisabledOptions: true,
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')],
}"
format="YYYY-MM-DD HH:mm:ss" />
</a-form-item>
</a-col>
</template>
<a-col :md="!advanced && 8 || 24" :sm="24">
<span
class="table-page-search-submitButtons"
:style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
<!-- <template v-if="advanced"> </template> -->
<a-col :md="4" :sm="24" :labelCol="{ span: 2, offset: 12 }">
<span class="table-page-search-submitButtons" style="text-align: right">
<a-button type="primary" @click="$refs.table.refresh(true)"></a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
<a @click="toggleAdvanced" style="margin-left: 8px">
<a-button style="margin-left: 8px" @click="() => (queryParam = {})">重置</a-button>
<!-- <a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'" />
</a>
</a> -->
</span>
</a-col>
</a-row>
@ -60,14 +65,16 @@
:columns="columns"
:data="loadData"
:alert="true"
:rowKey="(record) => record.id"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
:rowKey="record => record.id"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
>
<template slot="operator" v-if="hasPerm('sysVisLog:sysVisLog')">
<a-popconfirm
@confirm="() => sysVisLogDelete()"
placement="top"
title="确认清空日志?"
v-if="hasPerm('sysVisLog:delete')">
v-if="hasPerm('sysVisLog:delete')"
>
<a-button>清空日志</a-button>
</a-popconfirm>
</template>
@ -94,178 +101,170 @@
</div>
</template>
<script>
import {
import { STable, Ellipsis, XCard } from '@/components'
import { sysVisLogPage, sysVisLogDelete } from '@/api/modular/system/logManage'
import detailsVislog from './details'
import { sysEnumDataList } from '@/api/modular/system/enumManage'
import moment from 'moment'
export default {
components: {
XCard,
STable,
Ellipsis,
XCard
} from '@/components'
import {
sysVisLogPage,
sysVisLogDelete
} from '@/api/modular/system/logManage'
import detailsVislog from './details'
import {
sysEnumDataList
} from '@/api/modular/system/enumManage'
import moment from 'moment'
export default {
components: {
XCard,
STable,
Ellipsis,
detailsVislog
},
data() {
return {
advanced: false,
//
queryParam: {},
//
columns: [{
title: '日志名称',
dataIndex: 'name',
scopedSlots: {
customRender: 'name'
}
},
{
title: '访问类型',
dataIndex: 'visType',
scopedSlots: {
customRender: 'visType'
}
},
{
title: '是否成功',
dataIndex: 'success',
scopedSlots: {
customRender: 'success'
}
},
{
title: 'IP',
dataIndex: 'ip'
},
{
title: '浏览器',
dataIndex: 'browser'
},
{
title: '时间',
dataIndex: 'visTime',
scopedSlots: {
customRender: 'visTime'
}
},
{
title: '访问者',
dataIndex: 'account'
},
{
title: '详情',
dataIndex: 'action',
width: '150px',
scopedSlots: {
customRender: 'action'
}
detailsVislog
},
data() {
return {
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '日志名称',
dataIndex: 'name',
scopedSlots: {
customRender: 'name'
}
},
{
title: '访问类型',
dataIndex: 'visType',
scopedSlots: {
customRender: 'visType'
}
},
{
title: '是否成功',
dataIndex: 'success',
scopedSlots: {
customRender: 'success'
}
],
// Promise
loadData: parameter => {
return sysVisLogPage(Object.assign(parameter, this.switchingDate())).then((res) => {
return res.data
})
},
selectedRowKeys: [],
selectedRows: [],
defaultExpandedKeys: [],
visTypeDict: [],
successDict: []
{
title: 'IP',
dataIndex: 'ip'
},
{
title: '浏览器',
dataIndex: 'browser'
},
{
title: '时间',
dataIndex: 'visTime',
scopedSlots: {
customRender: 'visTime'
}
},
{
title: '访问者',
dataIndex: 'account'
},
{
title: '详情',
dataIndex: 'action',
width: '150px',
scopedSlots: {
customRender: 'action'
}
}
],
// Promise
loadData: parameter => {
return sysVisLogPage(Object.assign(parameter, this.switchingDate())).then(res => {
return res.data
})
},
selectedRowKeys: [],
selectedRows: [],
defaultExpandedKeys: [],
visTypeDict: [],
successDict: []
}
},
/**
* 相当于html的onload方法进来初始化
*/
created() {
this.sysEnumDataList()
},
methods: {
moment,
visTypeFilter(visType) {
// eslint-disable-next-line eqeqeq
const values = this.visTypeDict.filter(item => item.code == visType)
if (values.length > 0) {
return values[0].value
}
},
successFilter(success) {
// eslint-disable-next-line eqeqeq
const values = this.successDict.filter(item => item.code == success)
if (values.length > 0) {
return values[0].value
}
},
/**
* 相当于html的onload方法进来初始化
* 获取枚举数据
*/
created() {
this.sysEnumDataList()
sysEnumDataList() {
sysEnumDataList({
enumName: 'LoginType'
}).then(res => {
this.visTypeDict = res.data
})
sysEnumDataList({
enumName: 'YesOrNot'
}).then(res => {
this.successDict = res.data
})
},
methods: {
moment,
visTypeFilter(visType) {
// eslint-disable-next-line eqeqeq
const values = this.visTypeDict.filter(item => item.code == visType)
if (values.length > 0) {
return values[0].value
}
},
successFilter(success) {
// eslint-disable-next-line eqeqeq
const values = this.successDict.filter(item => item.code == success)
if (values.length > 0) {
return values[0].value
}
},
/**
* 获取枚举数据
*/
sysEnumDataList() {
sysEnumDataList({
enumName: 'LoginType'
}).then((res) => {
this.visTypeDict = res.data
})
sysEnumDataList({
enumName: 'YesOrNot'
}).then((res) => {
this.successDict = res.data
})
},
/**
* 查询参数组装
*/
switchingDate() {
const dates = this.queryParam.dates
if (dates != null) {
this.queryParam.searchBeginTime = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss')
this.queryParam.searchEndTime = moment(dates[1]).format('YYYY-MM-DD HH:mm:ss')
if (dates.length < 1) {
delete this.queryParam.searchBeginTime
delete this.queryParam.searchEndTime
}
/**
* 查询参数组装
*/
switchingDate() {
const dates = this.queryParam.dates
if (dates != null) {
this.queryParam.searchBeginTime = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss')
this.queryParam.searchEndTime = moment(dates[1]).format('YYYY-MM-DD HH:mm:ss')
if (dates.length < 1) {
delete this.queryParam.searchBeginTime
delete this.queryParam.searchEndTime
}
const obj = JSON.parse(JSON.stringify(this.queryParam))
delete obj.dates
return obj
},
/**
* 清空日志
*/
sysVisLogDelete() {
sysVisLogDelete().then((res) => {
if (res.success) {
this.$message.success('清空成功')
this.$refs.table.refresh(true)
} else {
this.$message.error('清空失败:' + res.message)
}
})
},
toggleAdvanced() {
this.advanced = !this.advanced
},
onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
}
const obj = JSON.parse(JSON.stringify(this.queryParam))
delete obj.dates
return obj
},
/**
* 清空日志
*/
sysVisLogDelete() {
sysVisLogDelete().then(res => {
if (res.success) {
this.$message.success('清空成功')
this.$refs.table.refresh(true)
} else {
this.$message.error('清空失败:' + res.message)
}
})
},
toggleAdvanced() {
this.advanced = !this.advanced
},
onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
}
}
}
</script>
<style lang="less">
.table-operator {
margin-bottom: 18px;
}
.table-operator {
margin-bottom: 18px;
}
button {
margin-right: 8px;
}
button {
margin-right: 8px;
}
</style>

Loading…
Cancel
Save