阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

184 lines
6.0 KiB

<template>
<div class="head-container">
<div class="head-search">
<el-input
v-if="!isCenter"
v-model="keyWord"
size="small"
clearable
placeholder="请输入关键词"
style="width: 300px;"
class="input-prepend filter-item"
@clear="crud.toQuery"
@keyup.enter.native="crud.toQuery"
>
<el-select slot="prepend" v-model="optionVal" style="width: 92px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-input>
<date-range-picker v-model="blurryTime" class="date-item" />
<el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="crud.toQuery">搜索</el-button>
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery()">重置</el-button>
</div>
<crudOperation>
<template v-slot:left>
<el-button v-if="!isCenter" :loading="crud.downloadLoading" size="mini" @click="handleComfiredDelt"><i class="iconfont icon-shanchu" />清空</el-button>
</template>
<template v-slot:right>
<el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)">
<i class="iconfont icon-daochu" />
导出
</el-button>
</template>
</crudOperation>
<!-- <el-button :loading="crud.downloadLoading" size="mini" icon="el-icon-download" @click="handleDownload">导出</el-button> -->
<!-- 清空 -->
<el-dialog class="tip-dialog" :visible.sync="delVisible" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body title="提示">
<div class="setting-dialog">
<div class="tip-content">
<p class="tipMsg">此操作将清空所选数据</p>
<span>你是否还要继续?</span>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="delVisible = false">取消</el-button>
<el-button type="primary">继续</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import CRUD, { header, crud } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import DateRangePicker from '@/components/DateRangePicker'
import { mapGetters } from 'vuex'
import { exportFile } from '@/utils/index'
import qs from 'qs'
export default {
components: { DateRangePicker, crudOperation },
mixins: [header(), crud()],
props: {
isLogType: {
type: String,
default: ''
},
isCenter: {
type: Boolean,
default: false
}
},
data() {
return {
blurryTime: [],
delVisible: false,
keyWord: '',
optionVal: 'username',
options: []
}
},
computed: {
...mapGetters([
'baseApi',
'user'
])
},
created() {
if (this.isLogType === 'error') {
this.options = [
{ value: 'username', label: '用户名' },
{ value: 'account', label: '登录账号' },
{ value: 'method', label: '请求方法' },
{ value: 'params', label: '请求参数' }
]
} else {
this.options = [
{ value: 'username', label: '用户名' },
{ value: 'det', label: '所属部门' },
{ value: 'account', label: '登录账号' }
]
}
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
this.crud.query[this.optionVal] = this.keyWord
if (this.blurryTime) {
this.crud.query.startTime = this.blurryTime[0]
this.crud.query.endTime = this.blurryTime[1]
} else {
this.crud.query.startTime = null
this.crud.query.endTime = null
}
},
resetQuery() {
if (this.isLogType === 'error') {
this.options = [
{ value: 'username', label: '用户名' },
{ value: 'account', label: '登录账号' },
{ value: 'method', label: '请求方法' },
{ value: 'params', label: '请求参数' }
]
} else {
this.options = [
{ value: 'username', label: '用户名' },
{ value: 'det', label: '所属部门' },
{ value: 'account', label: '登录账号' }
]
}
this.keyWord = ''
this.crud.query[this.optionVal] = this.keyWord
this.blurryTime = null
this.crud.query.startTime = null
this.crud.query.endTime = null
this.crud.toQuery()
},
handleComfiredDelt() {
if (this.isLogType === 'login') {
this.$emit('handleClearData')
} else if (this.isLogType === 'operate') {
this.$emit('handleClearOperateData')
} else {
this.$emit('handleClearErrorData')
}
},
doExport(data) {
console.log(data)
crud.downloadLoading = true
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const ids = []
data.forEach(val => {
ids.push(val.id)
})
const params = {
'ids': ids
}
if (this.isLogType === 'login') {
exportFile(this.baseApi + '/api/log/downloadLoginLog?' + qs.stringify(params, { indices: false }))
} else if (this.isLogType === 'operate') {
exportFile(this.baseApi + '/api/log/downloadLog?' + qs.stringify(params, { indices: false }))
} else {
exportFile(this.baseApi + '/api/log/downloadErrorLog?' + qs.stringify(params, { indices: false }))
}
}).catch(() => {
})
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .input-prepend .el-input__inner{
padding-left: 100px;
}
</style>