<template>
|
<div class="logLog_box">
|
<My-bread
|
:list="[
|
`${$t('operatManage.operatManage')}`,
|
`${$t('operatManage.blackwhiteList')}`,
|
]"
|
></My-bread>
|
<el-divider />
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
<el-tab-pane :label="$t('operatManage.BWL.blackList')" name="first">
|
<div class="inquire">
|
<el-form ref="ruleForm" :model="form" :inline="true">
|
<el-form-item
|
:label="$t('operatManage.BWL.blackListIP')"
|
prop="blackListIP"
|
>
|
<el-input
|
v-model="form.blackListIP"
|
:placeholder="$t('operatManage.BWL.listIPInfo')"
|
/>
|
</el-form-item>
|
<el-form-item
|
:label="$t('operatManage.BWL.IPState')"
|
prop="IPState"
|
>
|
<el-select v-model="form.IPState">
|
<el-option :label="$t('operatManage.BWL.all')" value="0" />
|
<el-option :label="$t('operatManage.BWL.validity')" value="1" />
|
<el-option
|
:label="$t('operatManage.BWL.invalidity')"
|
value="2"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item
|
:label="$t('operatManage.BWL.interceptionCycle')"
|
prop="interceptionCycle"
|
>
|
<el-input
|
v-model="form.interceptionCycle"
|
:placeholder="$t('operatManage.BWL.interceptionCycle')"
|
/>
|
</el-form-item>
|
<el-form-item prop="unit">
|
<el-select v-model="form.unit">
|
<el-option :label="$t('operatManage.BWL.seconds')" value="0" />
|
<el-option :label="$t('operatManage.BWL.mins')" value="1" />
|
<el-option :label="$t('operatManage.BWL.hours')" value="2" />
|
</el-select>
|
</el-form-item>
|
|
<el-form-item
|
:label="$t('operatManage.BWL.interceptionNumber')"
|
prop="interceptionNumber"
|
>
|
<el-input
|
v-model="form.interceptionNumber"
|
:placeholder="$t('operatManage.BWL.interceptionNumber')"
|
/>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button style="background: #409eff; border: 1px solid #409eff; color: white"
|
><i class="el-icon-search"></i> {{
|
$t('operatManage.BWL.search')
|
}}</el-button
|
>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="info"
|
><i class="el-icon-delete"></i> {{
|
$t('operatManage.BWL.reset')
|
}}</el-button
|
>
|
</el-form-item>
|
<el-form-item>
|
<el-button icon="el-icon-edit" v-if="menuStatus.insert" type="success" @click="showInsertdialog(1)">{{
|
$t('common.append')
|
}}</el-button>
|
</el-form-item>
|
<el-form-item>
|
<el-button icon="el-icon-delete" v-if="menuStatus.delete" type="danger" @click="delBWList">{{
|
$t('common.delete')
|
}}</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
<div class="table_box">
|
<el-table
|
:data="BTableData"
|
|
@selection-change="blackSelectionChange"
|
style="width: 100%"
|
height="85%"
|
>
|
<el-table-column type="selection" width="55" />
|
<el-table-column
|
align="center"
|
type="index"
|
:label="$t('operatManage.BWL.index')"
|
width="70px"
|
/>
|
<el-table-column
|
prop="ip"
|
:label="$t('operatManage.BWL.whiteListIP')"
|
/>
|
<el-table-column
|
prop="visit"
|
:label="$t('operatManage.BWL.PageView')"
|
/>
|
<el-table-column
|
prop="descr"
|
:label="$t('operatManage.BWL.description')"
|
/>
|
<el-table-column
|
prop="createName"
|
:label="$t('operatManage.BWL.creator')"
|
/>
|
<el-table-column
|
:formatter="formatData"
|
prop="createTime"
|
:label="$t('operatManage.BWL.creationTime')"
|
/>
|
<el-table-column
|
prop="updateName"
|
:label="$t('operatManage.BWL.update')"
|
/>
|
<el-table-column
|
:formatter="formatData"
|
prop="updateTime"
|
:label="$t('operatManage.BWL.UpdateTime')"
|
/>
|
<el-table-column
|
v-if="menuStatus.update"
|
:label="$t('operatManage.tokentoolObj.operation')"
|
width="320"
|
align="center"
|
>
|
<template slot-scope="scope">
|
<el-button
|
@click="handleEdit(scope.$index, scope.row)"
|
type="warning"
|
plain
|
size="small"
|
>{{ $t('common.update') }}</el-button
|
>
|
</template>
|
</el-table-column>
|
</el-table>
|
<div style="margin-top: 20px" class="pagination_box">
|
<el-pagination
|
@size-change="BhandleSizeChange"
|
@current-change="BhandleCurrentChange"
|
:current-page="BListData.pageIndex"
|
:page-sizes="[10, 20, 30, 40]"
|
:page-size="BListData.pageSize"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="Bcount"
|
>
|
</el-pagination>
|
</div>
|
</div>
|
</el-tab-pane>
|
<el-tab-pane :label="$t('operatManage.BWL.whiteList')" name="second"
|
><div class="inquire">
|
<el-form ref="ruleForm" :model="form" :inline="true">
|
<el-form-item
|
:label="$t('operatManage.BWL.whiteListIP')"
|
prop="whiteListIP"
|
>
|
<el-input
|
v-model="form.blackListIP"
|
:placeholder="$t('operatManage.BWL.listIPInfo')"
|
/>
|
</el-form-item>
|
<el-form-item
|
:label="$t('operatManage.BWL.IPState')"
|
prop="IPState"
|
>
|
<el-select v-model="form.IPState">
|
<el-option :label="$t('operatManage.BWL.all')" value="0" />
|
<el-option :label="$t('operatManage.BWL.validity')" value="1" />
|
<el-option
|
:label="$t('operatManage.BWL.invalidity')"
|
value="2"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button style="background: #409eff; border: 1px solid #409eff; color: white" @click="onSubmit"
|
><i class="el-icon-search"></i> {{
|
$t('operatManage.BWL.search')
|
}}</el-button
|
>
|
</el-form-item>
|
<el-form-item>
|
<el-button @click="onSubmit" type="info"
|
><i class="el-icon-delete"></i> {{
|
$t('operatManage.BWL.reset')
|
}}</el-button
|
>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="success" icon="el-icon-edit" v-if="menuStatus.insert" @click="showInsertdialog(2)">{{
|
$t('common.append')
|
}}</el-button>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="danger" icon="el-icon-delete" v-if="menuStatus.delete" @click="delBWList">{{
|
$t('common.delete')
|
}}</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
<div class="table_box1">
|
<el-table :data="WTableData" @selection-change="blackSelectionChange" style="width: 100%" height="85%">
|
<el-table-column type="selection" width="55" />
|
<el-table-column
|
align="center"
|
type="index"
|
:label="$t('operatManage.BWL.index')"
|
width="70px"
|
/>
|
<el-table-column
|
prop="ip"
|
:label="$t('operatManage.BWL.whiteListIP')"
|
/>
|
<el-table-column
|
prop="visit"
|
:label="$t('operatManage.BWL.PageView')"
|
/>
|
<el-table-column
|
prop="descr"
|
:label="$t('operatManage.BWL.description')"
|
/>
|
<el-table-column
|
prop="createName"
|
:label="$t('operatManage.BWL.creator')"
|
/>
|
<el-table-column
|
:formatter="formatData"
|
prop="createTime"
|
:label="$t('operatManage.BWL.creationTime')"
|
/>
|
<el-table-column
|
prop="updateName"
|
:label="$t('operatManage.BWL.update')"
|
/>
|
<el-table-column
|
:formatter="formatData"
|
prop="updateTime"
|
:label="$t('operatManage.BWL.UpdateTime')"
|
/>
|
<el-table-column
|
v-if="menuStatus.update"
|
:label="$t('operatManage.tokentoolObj.operation')"
|
width="320"
|
align="center"
|
>
|
<template slot-scope="scope">
|
<el-button
|
@click="handleEdit(scope.$index, scope.row)"
|
type="warning"
|
plain
|
size="small"
|
>{{ $t('common.update') }}</el-button
|
>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-table>
|
<div style="margin-top: 20px" class="pagination_box">
|
<el-pagination
|
@size-change="WhandleSizeChange"
|
@current-change="WhandleCurrentChange"
|
:current-page="WListData.pageIndex"
|
:page-sizes="[10, 20, 30, 40]"
|
:page-size="WListData.pageSize"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="Wcount"
|
>
|
</el-pagination>
|
</div></div
|
></el-tab-pane>
|
</el-tabs>
|
<el-dialog
|
:title="$t('common.append')"
|
style="overflow: hidden"
|
:visible.sync="InsertFormdialog"
|
width="30%"
|
>
|
<el-form ref="insertform" :model="insertform">
|
<el-form-item :label-width="formLabelWidth" :label="$t('operatManage.tokentoolObj.ip')">
|
<el-input
|
v-model="insertform.ip"
|
:placeholder="$t('common.pleaseInput')"
|
/>
|
</el-form-item>
|
<el-form-item :label-width="formLabelWidth" :label="$t('operatManage.BWL.PageView')">
|
<el-input
|
v-model="insertform.visit"
|
:placeholder="$t('common.pleaseInput')"
|
/>
|
</el-form-item>
|
<el-form-item :label-width="formLabelWidth" :label="$t('operatManage.BWL.description')">
|
<el-input
|
v-model="insertform.descr"
|
:placeholder="$t('common.pleaseInput')"
|
/>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="insertFromDataClose">{{
|
$t('common.close')
|
}}</el-button>
|
<el-button @click="insertFromData" type="primary">{{
|
$t('common.confirm')
|
}}</el-button>
|
</div>
|
</el-dialog>
|
<el-dialog
|
:title="$t('common.update')"
|
style="overflow: hidden"
|
:visible.sync="updateFormdialog"
|
width="30%"
|
>
|
<el-form ref="editfrom" :model="editfrom">
|
<el-form-item :label-width="formLabelWidth" label="IP地址">
|
<el-input
|
v-model="editfrom.ip"
|
:placeholder="$t('common.pleaseInput')"
|
/>
|
</el-form-item>
|
<el-form-item :label-width="formLabelWidth" label="访问次数">
|
<el-input
|
v-model="editfrom.visit"
|
:placeholder="$t('common.pleaseInput')"
|
/>
|
</el-form-item>
|
<el-form-item :label-width="formLabelWidth" label="描述">
|
<el-input
|
v-model="editfrom.descr"
|
:placeholder="$t('common.pleaseInput')"
|
/>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="editFromDataClose">{{
|
$t('common.close')
|
}}</el-button>
|
<el-button @click="editFromData" type="primary">{{
|
$t('common.confirm')
|
}}</el-button>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import MyBread from '../../components/MyBread.vue';
|
import {
|
blacklistSelectByPageAndCount,
|
blacklistAppend,
|
deletelacklist,
|
updateblacklist,
|
blacklistSelectCount,
|
} from '../../api/api';
|
export default {
|
//import引入的组件需要注入到对象中才能使用
|
components: {
|
MyBread,
|
},
|
|
data() {
|
return {
|
menuStatus: {
|
delete: false,
|
insert: false,
|
update: false,
|
},
|
updateFormdialog: false,
|
multipleSelection: [],
|
formLabelWidth: '100px',
|
insertform: {},
|
editfrom: {},
|
InsertFormdialog: false,
|
activeName: 'first',
|
currentPage: 1,
|
form: {
|
blackListIP: '',
|
IPState: '',
|
interceptionCycle: '',
|
unit: '',
|
interceptionNumber: '',
|
},
|
BTableData: [],
|
WTableData: [],
|
BListData: {
|
pageIndex: 1,
|
pageSize: 10,
|
type: 1,
|
},
|
WListData: {
|
pageIndex: 1,
|
pageSize: 10,
|
type: 2,
|
},
|
Wcount: 0,
|
Bcount: 0,
|
};
|
},
|
methods: {
|
editFromDataClose() {
|
this.updateFormdialog = false;
|
this.editfrom = {};
|
},
|
async editFromData() {
|
var data = await updateblacklist(this.editfrom);
|
if (data.code == 200) {
|
this.updateFormdialog = false;
|
this.editfrom = {};
|
this.$message({
|
message: '修改成功!',
|
type: 'success',
|
});
|
this.BGetList();
|
this.WGetList();
|
} else {
|
this.$message({
|
message: '修改失败!',
|
type: 'warning',
|
});
|
}
|
},
|
handleEdit(index, row) {
|
this.editfrom = row;
|
this.updateFormdialog = true;
|
},
|
|
async delBWList() {
|
var std = [];
|
for (var i in this.multipleSelection) {
|
std.push(this.multipleSelection[i].id);
|
}
|
//deletes
|
const data = await deletelacklist({ ids: std.toString() });
|
if (data.code == 200) {
|
this.$message({
|
message: '删除成功!',
|
type: 'success',
|
});
|
this.BGetList();
|
this.WGetList();
|
} else {
|
this.$message({
|
message: '删除失败!',
|
type: 'warning',
|
});
|
}
|
},
|
blackSelectionChange(val) {
|
this.multipleSelection = val;
|
},
|
showInsertdialog(res) {
|
this.insertform.type = res;
|
this.InsertFormdialog = true;
|
},
|
insertFromDataClose() {
|
this.InsertFormdialog = false;
|
this.insertform = {};
|
},
|
async insertFromData() {
|
var count = await blacklistSelectCount(this.insertform);
|
if (parseInt(count.result) != 0) return;
|
|
var data = await blacklistAppend(this.insertform);
|
if (data.code == 200) {
|
this.InsertFormdialog = false;
|
this.insertform = {};
|
this.$message({
|
message: '添加成功!',
|
type: 'success',
|
});
|
this.BGetList();
|
this.WGetList();
|
} else {
|
this.$message({
|
message: '添加失败!',
|
type: 'warning',
|
});
|
}
|
},
|
//格式化时间
|
add0(m) {
|
return m < 10 ? '0' + m : m;
|
},
|
//格式化时间
|
format(shijianchuo) {
|
//shijianchuo是整数,否则要parseInt转换
|
var time = new Date(shijianchuo);
|
var y = time.getFullYear();
|
var m = time.getMonth() + 1;
|
var d = time.getDate();
|
var h = time.getHours();
|
var mm = time.getMinutes();
|
var s = time.getSeconds();
|
return (
|
y + '-' + this.add0(m) + '-' + this.add0(d)
|
// " " +
|
// this.add0(h) +
|
// ":" +
|
// this.add0(mm) +
|
// ":" +
|
// this.add0(s)
|
);
|
},
|
//格式化列表
|
formatData(row, column) {
|
let data = row[column.property];
|
if (data == null) {
|
return data;
|
}
|
return this.format(data);
|
},
|
handleClick(tab, event) {
|
console.log(tab, event);
|
},
|
WhandleSizeChange(val) {
|
this.WListData.pageSize = val;
|
this.getList();
|
},
|
WhandleCurrentChange(val) {
|
this.WListData.pageIndex = val;
|
this.getList();
|
},
|
BhandleSizeChange(val) {
|
this.BListData.pageSize = val;
|
this.getList();
|
},
|
BhandleCurrentChange(val) {
|
this.BListData.pageIndex = val;
|
this.getList();
|
},
|
onSubmit() {
|
console.log('submit!');
|
},
|
resetForm(formName) {
|
this.$refs[formName].resetFields();
|
},
|
async WGetList() {
|
const data = await blacklistSelectByPageAndCount(this.WListData);
|
|
if (data.code != 200) {
|
return this.$message.error('列表调用失败');
|
}
|
this.WTableData = data.result;
|
this.Wcount = data.count;
|
},
|
async BGetList() {
|
const data = await blacklistSelectByPageAndCount(this.BListData);
|
if (data.code != 200) {
|
return this.$message.error('列表调用失败');
|
}
|
|
this.BTableData = data.result;
|
this.Bcount = data.count;
|
},
|
showPermsMenu(res) {
|
switch (res.tag) {
|
case '/delete':
|
this.menuStatus.delete = true;
|
break;
|
case '/insert':
|
this.menuStatus.insert = true;
|
break;
|
case '/update':
|
this.menuStatus.update = true;
|
break;
|
}
|
},
|
},
|
created() {
|
var val = this.$store.state.currentPerms;
|
var permsEntity = this.$store.state.permsEntity;
|
for (var i = 0; i < permsEntity.length; i++) {
|
if (permsEntity[i].perms == val) {
|
this.showPermsMenu(permsEntity[i]);
|
}
|
}
|
this.BGetList();
|
this.WGetList();
|
},
|
};
|
</script>
|
<style lang="less" scoped>
|
//@import url(); 引入公共css类
|
.logLog_box {
|
|
border-radius: 10px;
|
height: 100%;
|
|
box-sizing: border-box;
|
.el-input {
|
width: 300px;
|
}
|
.inquire {
|
padding: 10px;
|
margin-top: 20px;
|
border-radius: 5px;
|
border: 1px solid rgb(202, 201, 204);
|
margin-bottom: 20px;
|
|
}
|
.table_box {
|
padding: 10px;
|
border-radius: 5px;
|
border: 1px solid rgb(202, 201, 204);
|
overflow: auto;
|
height: 410px;
|
}
|
.table_box1{
|
padding: 10px;
|
border-radius: 5px;
|
border: 1px solid rgb(202, 201, 204);
|
overflow: auto;
|
height: 460px;
|
}
|
.text-center {
|
text-align: center;
|
}
|
.pagination_box {
|
/deep/.el-input__inner {
|
background-color: transparent !important;
|
border: 1px solid;
|
color: white;
|
}
|
/deep/.el-pagination__total {
|
color: white;
|
}
|
/deep/.el-pagination__jump {
|
color: white;
|
}
|
/deep/.el-pager li.active {
|
color: #1890ff;
|
}
|
/deep/.el-pager li {
|
color: white;
|
background: transparent;
|
}
|
/deep/.el-pager li {
|
color: white;
|
}
|
/deep/.btn-prev {
|
background: transparent;
|
}
|
/deep/.btn-next {
|
background: transparent;
|
}
|
}
|
/deep/
|
.el-tabs__item {
|
color: #409eff;
|
}
|
/deep/.el-form-item__label {
|
color: white;
|
}
|
/deep/ .el-input__inner {
|
background-color: transparent !important;
|
border: 1px solid;
|
color: white;
|
}
|
/deep/ .el-dialog {
|
background: #303030;
|
}
|
/deep/.el-range-editor.is-active,
|
.el-range-editor.is-active:hover,
|
.el-select .el-input.is-focus .el-input__inner {
|
border: 1px solid;
|
}
|
/deep/.el-dialog__title {
|
color: white;
|
}
|
/deep/.el-tabs__active-bar{
|
background: #409eff;
|
}
|
/*修改table 表体的背景颜色和文字颜色*/
|
/deep/ .el-table {
|
background-color: transparent;
|
|
th,
|
td {
|
background-color: transparent;
|
}
|
.el-table__expanded-cell {
|
background-color: transparent !important;
|
}
|
|
// 表头背景色
|
th.el-table__cell {
|
background-color: #303030;
|
color: #fff;
|
}
|
tr > td {
|
background-color: #303030;
|
color: #fff;
|
}
|
|
// hover效果
|
tr:hover > td {
|
background-color: rgba(255, 255, 255, 0.3) !important;
|
}
|
|
tbody tr:hover {
|
background-color: rgba(255, 255, 255, 0.3) !important;
|
// text-align: center;
|
}
|
|
// 滚动条宽高
|
.el-table__body-wrapper::-webkit-scrollbar {
|
width: 5px;
|
height: 5px;
|
}
|
|
.el-table__body-wrapper::-webkit-scrollbar {
|
width: 5px;
|
/*滚动条宽度*/
|
height: 10px;
|
/*滚动条高度*/
|
}
|
/*定义滚动条轨道 内阴影+圆角*/
|
.el-table__body-wrapper::-webkit-scrollbar-track {
|
box-shadow: 0px 1px 3px #216fe6 inset;
|
/*滚动条的背景区域的内阴影*/
|
border-radius: 10px;
|
}
|
|
/*定义滑块 内阴影+圆角*/
|
.el-table__body-wrapper::-webkit-scrollbar-thumb {
|
box-shadow: 0px 1px 3px #216fe6 inset;
|
border-radius: 6px;
|
background-color: #216fe6;
|
}
|
}
|
}
|
</style>
|