【前端】智能库房综合管理系统前端项目
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.
 
 
 
 
 

135 lines
4.4 KiB

<template>
<div>
<div class="head-container">
<!-- <crudOperation /> -->
<!-- <el-button v-permission="permission.download" :loading="crud.downloadLoading" :disabled="!selections.length" size="mini" icon="el-icon-download" @click="handleDownload">导出</el-button> -->
<el-button :loading="crud.downloadLoading" size="mini" icon="el-icon-download" @click="handleDownload">导出</el-button>
<el-input
v-model="query.blurry"
size="small"
clearable
placeholder="请输入关键词"
style="width: 300px;margin-right:10px;padding-left:10px"
class="input-prepend filter-item"
@keyup.enter.native="crud.toQuery"
>
<!-- <el-select slot="prepend" v-model="optionVal" style="width: 100px" @keyup.enter.native="crud.toQuery"> -->
<el-select slot="prepend" v-model="optionVal" style="width: 100px">
<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="query.createTime" class="date-item" />
<rrOperation />
</div>
<el-table
ref="table"
:data="crud.data"
style="width: 100%;"
height="calc(100vh - 356px)"
@row-click="clickRowHandler"
@selection-change="selectionChangeHandler"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="100" align="center" />
<el-table-column prop="account" label="登录账号" min-width="150" align="center" />
<el-table-column prop="username" label="用户名" align="center" min-width="150" />
<el-table-column prop="role" label="用户角色" align="center" min-width="150">
<template slot-scope="scope">
<div>{{ scope.row.role | parseRole }}</div>
</template>
</el-table-column>
<el-table-column prop="det" label="所属部门" align="center" min-width="180" />
<el-table-column prop="requestIp" label="IP地址" align="center" min-width="180" />
<el-table-column prop="create_time" label="操作时间" align="center" min-width="180">
<template slot-scope="scope">
<div>{{ scope.row.create_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<pagination />
</div>
</template>
<script>
import rrOperation from '@crud/RR.operation'
import CRUD, { presenter, crud, header } from '@crud/crud'
import DateRangePicker from '@/components/DateRangePicker'
import pagination from '@crud/Pagination'
import { mapGetters } from 'vuex'
import { parseTime, saveAs, getBlob } from '@/utils/index'
import qs from 'qs'
export default {
name: 'LoginLog',
components: { rrOperation, DateRangePicker, pagination },
filters: {
parseRole(val) {
const arr = val.split(',')
const arr1 = arr.filter(item => item.includes('name'))
const role = arr1[0].split('=')[1]
return role
}
},
mixins: [presenter(), crud(), header()],
cruds() {
return CRUD({
url: 'api/loginlogs/list',
// sort: ['update_time,desc'],
// crudMethod: caseCrudMethod,
optShow: {
add: false,
edit: false,
del: false,
download: true
}
})
},
data() {
return {
selections: [],
keyWord: '',
optionVal: 1,
options: [
{ value: 1, label: '用户名' },
{ value: 2, label: '所属部门' },
{ value: 3, label: '登录账号' }
],
queryTime: null
}
},
computed: {
...mapGetters([
'baseApi'
])
},
methods: {
// 导出
handleDownload() {
this.crud.downloadLoading = true
const fileName = parseTime(new Date()) + '-登录日志'
getBlob(this.baseApi + '/api/loginlogs/download' + '?' + qs.stringify(this.crud.query, { indices: false }), function(blob) {
saveAs(blob, fileName)
})
this.crud.downloadLoading = false
},
test() {
console.log(this.crud, 'crud')
},
clickRowHandler(row) {
this.$refs.table.toggleRowSelection(row) // 单击选中
},
selectionChangeHandler(val) {
this.selections = val
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/assets/styles/archives-manage.scss";
</style>