This commit is contained in:
dute7liang
2024-01-19 00:11:01 +08:00
parent 3cae045713
commit a50057bd8c
11 changed files with 442 additions and 509 deletions

View File

@@ -17,6 +17,14 @@ export function resetUserPassword(data) {
}) })
} }
export function userForbid(data) {
return request({
url: '/cai/user/userForbid',
method: 'post',
data: data
})
}
export function resetUserMobile(data) { export function resetUserMobile(data) {
return request({ return request({
url: '/cai/user/updateMobile', url: '/cai/user/updateMobile',

View File

@@ -9,6 +9,14 @@ export function listUserForbid(query) {
}) })
} }
export function unForbid(id) {
return request({
url: '/cai/userForbid/un/forbid',
method: 'get',
params:{id}
})
}
// 查询封号列表详细 // 查询封号列表详细
export function getUserForbid(id) { export function getUserForbid(id) {
return request({ return request({

View File

@@ -24,11 +24,11 @@ export default {
}, },
width: { width: {
type: [Number, String], type: [Number, String],
default: "41px" default: "30px"
}, },
height: { height: {
type: [Number, String], type: [Number, String],
default: "41px" default: "30px"
}, },
}, },
computed: { computed: {

View File

@@ -46,18 +46,14 @@ export const cashStatusList = [
{ value: 3, label: '审核不通过',listClass: listClass.danger }, { value: 3, label: '审核不通过',listClass: listClass.danger },
{ value: 4, label: '提现取消',listClass: listClass.info } { value: 4, label: '提现取消',listClass: listClass.info }
] ]
// 1.封6小时 2.封1天 3.封3天 4.封5天 5.封7天 6.封一个月 7.封10年 8 一小时 9 三小时 10 十二小时
export const forbidTimeList = [ export const forbidTimeList = [
{ value: 1, label: '封6小时' }, { value: 1, label: '封6小时' },
{ value: 2, label: '封1天'}, { value: 2, label: '封1天'},
{ value: 3, label: '封3天' }, { value: 3, label: '封3天' },
{ value: 4, label: '封5天' }, { value: 4, label: '封7天' },
{ value: 5, label: '封7天' }, { value: 5, label: '封一个月' },
{ value: 6, label: '封一个月' }, { value: 6, label: '封10年' },
{ value: 7, label: '封10年' },
{ value: 8, label: '一小时' },
{ value: 9, label: '三小时' },
{ value: 10, label: '十二小时' },
] ]
// 1 封用户uid 2.封设备uuid 3.imei 4.mac // 1 封用户uid 2.封设备uuid 3.imei 4.mac
@@ -66,6 +62,7 @@ export const forbidTypeList = [
{ value: 2, label: '设备'}, { value: 2, label: '设备'},
{ value: 3, label: 'imei' }, { value: 3, label: 'imei' },
{ value: 4, label: 'mac' }, { value: 4, label: 'mac' },
{ value: 5, label: 'ip' },
] ]
export const memberTypeList = [ export const memberTypeList = [

View File

@@ -83,7 +83,7 @@ DictData.install()
Element.Dialog.props.closeOnClickModal.default = false Element.Dialog.props.closeOnClickModal.default = false
Vue.use(Element, { Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size size: Cookies.get('size') || 'mini' // set element-ui default size
}) })
Vue.config.productionTip = false Vue.config.productionTip = false

View File

@@ -1,18 +1,25 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
<el-form-item label="拦截数据" prop="member"> <el-form-item label="拦截用户手机号" prop="userMobile">
<el-input <el-input
v-model="queryParams.member" v-model="queryParams.userMobile"
placeholder="请输入拦截数据" placeholder="请输入拦截用户手机号"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="拦截用户" prop="userId"> <el-form-item label="拦截用户蜜瓜号" prop="userUsercode">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userUsercode"
placeholder="请输入拦截用户" placeholder="请输入拦截用户蜜瓜号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="拦截对象" prop="member">
<el-input
v-model="queryParams.member"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
@@ -20,26 +27,20 @@
<el-form-item label="拦截编号" prop="traceNo"> <el-form-item label="拦截编号" prop="traceNo">
<el-input <el-input
v-model="queryParams.traceNo" v-model="queryParams.traceNo"
placeholder="请输入拦截编号"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="关联ID" prop="forbidId"> <el-form-item label="拦截类型" prop="type">
<el-input <el-select v-model="queryParams.type" clearable size="small">
v-model="queryParams.forbidId" <el-option
placeholder="请输入关联ID" v-for="dict in forbidTypeList"
clearable :key="dict.value"
@keyup.enter.native="handleQuery" :label="dict.label"
/> :value="dict.value"
</el-form-item>
<el-form-item label="理由" prop="filterReason">
<el-input
v-model="queryParams.filterReason"
placeholder="请输入理由"
clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -47,79 +48,27 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['cai:forbidFilter:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['cai:forbidFilter:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['cai:forbidFilter:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['cai:forbidFilter:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="forbidFilterList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="forbidFilterList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="类型" align="center" prop="type">
<el-table-column label="类型" align="center" prop="type" /> <template v-slot="scope">
<el-table-column label="拦截数据" align="center" prop="member" /> <cai-dict-tag :options="forbidTypeList" :value="scope.row.type" />
<el-table-column label="拦截用户" align="center" prop="userId" />
<el-table-column label="拦截编号" align="center" prop="traceNo" />
<el-table-column label="关联ID" align="center" prop="forbidId" />
<el-table-column label="理由" align="center" prop="filterReason" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['cai:forbidFilter:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['cai:forbidFilter:remove']"
>删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="拦截对象" align="center" prop="member">
<template v-slot="scope">
<span v-if="scope.row.type === 1">
{{scope.row.memberNickname}}{{scope.row.member}}<image-avatar :src="scope.row.memberAvatar"/>
</span>
<span v-if="scope.row.type !== 1">
{{scope.row.member}}
</span>
</template>
</el-table-column>
<el-table-column label="拦截用户手机号" align="center" prop="userMobile"/>
<el-table-column label="拦截用户蜜瓜号" align="center" prop="userUsercode"/>
<el-table-column label="拦截编号" align="center" prop="traceNo"/>
<el-table-column label="理由" align="center" prop="filterReason"/>
</el-table> </el-table>
<pagination <pagination
@@ -130,42 +79,18 @@
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改登陆拦截记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="拦截数据" prop="member">
<el-input v-model="form.member" placeholder="请输入拦截数据" />
</el-form-item>
<el-form-item label="拦截用户" prop="userId">
<el-input v-model="form.userId" placeholder="请输入拦截用户" />
</el-form-item>
<el-form-item label="拦截编号" prop="traceNo">
<el-input v-model="form.traceNo" placeholder="请输入拦截编号" />
</el-form-item>
<el-form-item label="关联ID" prop="forbidId">
<el-input v-model="form.forbidId" placeholder="请输入关联ID" />
</el-form-item>
<el-form-item label="理由" prop="filterReason">
<el-input v-model="form.filterReason" placeholder="请输入理由" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listForbidFilter, getForbidFilter, delForbidFilter, addForbidFilter, updateForbidFilter } from "@/api/cai/forbidFilter"; import {listForbidFilter} from "@/api/cai/forbidFilter";
import {forbidStatusList, forbidTimeList, forbidTypeList} from "@/constant/statusMap";
export default { export default {
name: "ForbidFilter", name: "ForbidFilter",
data() { data() {
return { return {
// 按钮loading forbidTimeList, forbidTypeList, forbidStatusList,
buttonLoading: false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
@@ -180,50 +105,16 @@ export default {
total: 0, total: 0,
// 登陆拦截记录表格数据 // 登陆拦截记录表格数据
forbidFilterList: [], forbidFilterList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
type: undefined, type: undefined,
member: undefined, member: undefined,
userId: undefined,
traceNo: undefined, traceNo: undefined,
forbidId: undefined, userMobile: undefined,
filterReason: undefined userUsercode: undefined,
}, },
// 表单参数
form: {},
// 表单校验
rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型不能为空", trigger: "change" }
],
member: [
{ required: true, message: "拦截数据不能为空", trigger: "blur" }
],
userId: [
{ required: true, message: "拦截用户不能为空", trigger: "blur" }
],
traceNo: [
{ required: true, message: "拦截编号不能为空", trigger: "blur" }
],
forbidId: [
{ required: true, message: "关联ID不能为空", trigger: "blur" }
],
createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" }
],
filterReason: [
{ required: true, message: "理由不能为空", trigger: "blur" }
]
}
}; };
}, },
created() { created() {
@@ -239,25 +130,6 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: undefined,
type: undefined,
member: undefined,
userId: undefined,
traceNo: undefined,
forbidId: undefined,
createTime: undefined,
filterReason: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
@@ -276,68 +148,16 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset();
this.open = true;
this.title = "添加登陆拦截记录";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getForbidFilter(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改登陆拦截记录";
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateForbidFilter(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addForbidFilter(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除登陆拦截记录编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delForbidFilter(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
}, },
/** 导出按钮操作 */
handleExport() {
this.download('cai/forbidFilter/export', {
...this.queryParams
}, `forbidFilter_${new Date().getTime()}.xlsx`)
}
} }
}; };
</script> </script>

View File

@@ -124,9 +124,10 @@
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['cai:userUnion:remove']"> <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['cai:userUnion:remove']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleDelete" icon="el-icon-info">完整信息</el-dropdown-item> <!-- <el-dropdown-item command="handleDelete" icon="el-icon-info">完整信息</el-dropdown-item>-->
<el-dropdown-item command="handleResetPwd" icon="el-icon-key">重置密码</el-dropdown-item> <el-dropdown-item command="handleResetPwd" icon="el-icon-key">重置密码</el-dropdown-item>
<el-dropdown-item command="handleResetMobile" icon="el-icon-phone">修改手机</el-dropdown-item> <el-dropdown-item command="handleResetMobile" icon="el-icon-phone">修改手机</el-dropdown-item>
<el-dropdown-item command="handleUserForbid" icon="el-icon-lock">封禁</el-dropdown-item>
<el-dropdown-item command="handleDelete" icon="el-icon-delete" v-hasPermi="['cai:user:remove']">删除</el-dropdown-item> <el-dropdown-item command="handleDelete" icon="el-icon-delete" v-hasPermi="['cai:user:remove']">删除</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
@@ -144,6 +145,7 @@
<user-add-update-dialog v-if="userAddUpdateDialogVisible" ref="userAddUpdateDialog" @refreshDataList="getList" /> <user-add-update-dialog v-if="userAddUpdateDialogVisible" ref="userAddUpdateDialog" @refreshDataList="getList" />
<user-info-dialog v-if="userInfoDialogVisible" ref="userInfoDialog" /> <user-info-dialog v-if="userInfoDialogVisible" ref="userInfoDialog" />
<user-forbid-dialog v-if="userForbidVisible" ref="userForbid" @refreshDataList="getList" />
</div> </div>
</template> </template>
@@ -152,15 +154,17 @@ import {delUser, getFullUser, listUser, resetUserMobile, resetUserPassword} from
import {authList, genderList, userStatusList, isAnchorList, videoStatusList} from '@/constant/statusMap' import {authList, genderList, userStatusList, isAnchorList, videoStatusList} from '@/constant/statusMap'
import UserAddUpdateDialog from '@/views/cai/user/user-add-update-dialog.vue' import UserAddUpdateDialog from '@/views/cai/user/user-add-update-dialog.vue'
import UserInfoDialog from "@/views/cai/user/user-info-dialog"; import UserInfoDialog from "@/views/cai/user/user-info-dialog";
import UserForbidDialog from "@/views/cai/user/user-forbid-dialog";
export default { export default {
name: "User", name: "User",
components:{ components:{
UserForbidDialog,
UserAddUpdateDialog,UserInfoDialog UserAddUpdateDialog,UserInfoDialog
}, },
data() { data() {
return { return {
genderList,authList,userStatusList,isAnchorList,videoStatusList, genderList,authList,userStatusList,isAnchorList,videoStatusList,
userForbidVisible: false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
@@ -300,6 +304,12 @@ export default {
}); });
}).catch(() => {}); }).catch(() => {});
}, },
handleUserForbid(row){
this.userForbidVisible = true
this.$nextTick(() => {
this.$refs.userForbid.init(row)
})
},
handleCommand(command, row) { handleCommand(command, row) {
switch (command) { switch (command) {
case "handleDelete": case "handleDelete":
@@ -311,6 +321,9 @@ export default {
case "handleResetMobile": case "handleResetMobile":
this.handleResetMobile(row); this.handleResetMobile(row);
break; break;
case "handleUserForbid":
this.handleUserForbid(row);
break;
default: default:
break; break;
} }

View File

@@ -0,0 +1,102 @@
<template>
<el-dialog title="封禁" :close-on-click-modal="false" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="封禁用户" prop="">
{{ info.nickname }} {{ info.usercode }} <image-avatar :src="info.avatar"/>
</el-form-item>
<el-form-item label="封禁类型" prop="type">
<el-checkbox-group v-model="form.type">
<el-checkbox :label="1">用户</el-checkbox>
<el-checkbox :label="2">设备</el-checkbox>
<el-checkbox :label="3">登录IP</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="封禁时长" prop="forbidTime">
<el-radio-group v-model="form.forbidTime">
<el-radio
v-for="dict in forbidTimeList"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="理由" prop="reason">
<el-input v-model="form.reason" placeholder="请输入理由" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="open = false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import ImageUpload from '@/components/ImageUpload/index'
import {userForbid} from '@/api/cai/user'
import {forbidStatusList, forbidTimeList, forbidTypeList} from "@/constant/statusMap";
export default {
components: {
ImageUpload,
},
data () {
return {
forbidTimeList,
forbidTypeList,forbidStatusList,
open: false,
title: '',
form:{
userId: undefined,
type: [],
forbidTime: undefined,
reason: undefined,
},
info:{
},
// 表单校验
rules: {
type: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
forbidTime: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
reason: [
{ required: true, message: "数据不能为空", trigger: "blur" }
]
},
buttonLoading: false,
}
},
created() {
},
methods: {
init (row) {
this.info = row
this.form.userId = row.id
this.form.type = []
this.form.forbidTime = undefined
this.form.reason = undefined
this.open = true;
},
// 表单提交
submitForm () {
this.$refs['form'].validate((valid) => {
if (valid) {
this.buttonLoading = true;
userForbid(this.form).then(data => {
this.$modal.msgSuccess("操作成功");
this.buttonLoading = false;
this.open = false
this.$emit('refreshDataList')
}).finally(() => {
this.buttonLoading = false;
});
}
})
},
}
}
</script>

View File

@@ -1,6 +1,24 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
<el-form-item label="封号对象" prop="member">
<el-input
v-model="queryParams.member"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="封号类型" prop="type">
<el-select v-model="queryParams.type" clearable size="small">
<el-option
v-for="dict in forbidTypeList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@keyup.enter.native="handleQuery"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -14,7 +32,16 @@
<cai-dict-tag :options="forbidTypeList" :value="scope.row.type" /> <cai-dict-tag :options="forbidTypeList" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="封号对象" align="center" prop="member" /> <el-table-column label="封号对象" align="center" prop="member">
<template v-slot="scope">
<span v-if="scope.row.type === 1">
{{scope.row.nickname}}{{scope.row.member}}<image-avatar :src="scope.row.avatar"/>
</span>
<span v-if="scope.row.type !== 1">
{{scope.row.member}}
</span>
</template>
</el-table-column>
<el-table-column label="开始时间" align="center" prop="beginTime" /> <el-table-column label="开始时间" align="center" prop="beginTime" />
<el-table-column label="结束时间" align="center" prop="endTime" /> <el-table-column label="结束时间" align="center" prop="endTime" />
<el-table-column label="最后封禁理由" align="center" prop="reason" /> <el-table-column label="最后封禁理由" align="center" prop="reason" />
@@ -23,7 +50,7 @@
<cai-dict-tag :options="forbidStatusList" :value="scope.row.forbidStatus" /> <cai-dict-tag :options="forbidStatusList" :value="scope.row.forbidStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="60"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="120">
<template v-slot="scope"> <template v-slot="scope">
<el-button <el-button
size="mini" size="mini"
@@ -48,18 +75,25 @@
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<user-forbid-log-list v-if="userForbidLogListVisible" ref="userForbidLogList" />
</div> </div>
</template> </template>
<script> <script>
import { delUserForbid, listUserForbid } from '@/api/cai/userForbid' import {listUserForbid, unForbid} from '@/api/cai/userForbid'
import {forbidStatusList, forbidTimeList, forbidTypeList} from '@/constant/statusMap' import {forbidStatusList, forbidTimeList, forbidTypeList} from '@/constant/statusMap'
import UserForbidLogList from "@/views/cai/userForbid/user-forbid-log-list";
export default { export default {
name: "UserForbid", name: "UserForbid",
components:{
UserForbidLogList
},
data() { data() {
return { return {
forbidTimeList,forbidTypeList,forbidStatusList, forbidTimeList,forbidTypeList,forbidStatusList,
userForbidLogListVisible: false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
@@ -78,14 +112,10 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
userUsercode: undefined,
userMobile: undefined,
type: undefined, type: undefined,
sourceId: undefined,
member: undefined, member: undefined,
forbidTime: undefined,
beginTime: undefined,
endTime: undefined,
originUid: undefined,
reason: undefined
}, },
}; };
}, },
@@ -118,11 +148,24 @@ export default {
this.single = selection.length!==1 this.single = selection.length!==1
this.multiple = !selection.length this.multiple = !selection.length
}, },
handleForbid(){ handleForbid(row){
this.$modal.confirm('是否确认解封对象:"' + row.member + '"的数据项?').then(() => {
this.loading = true;
return unForbid(row.id);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("解封成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
}, },
handleForbidLogInfo(){ handleForbidLogInfo(row){
this.userForbidLogListVisible = true
this.$nextTick(() => {
this.$refs.userForbidLogList.init(row.member)
})
} }
} }
}; };

View File

@@ -0,0 +1,129 @@
<template>
<el-dialog title="账户明细" :close-on-click-modal="false" :visible.sync="open" width="1000px" append-to-body>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="封号类型" prop="type">
<el-select v-model="queryParams.type" clearable size="small">
<el-option
v-for="dict in forbidTypeList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@keyup.enter.native="handleQuery"
/>
</el-select>
</el-form-item>
<el-form-item label="封号时长" prop="forbidTime">
<el-select v-model="queryParams.forbidTime" clearable size="small">
<el-option
v-for="dict in forbidTimeList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@keyup.enter.native="handleQuery"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="userForbidLogList">
<el-table-column label="类型" align="center" prop="type">
<template v-slot="scope">
<cai-dict-tag :options="forbidTypeList" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="封号对象" align="center" prop="member" >
<template v-slot="scope">
<span v-if="scope.row.type === 1">
{{scope.row.nickname}}{{scope.row.member}}<image-avatar :src="scope.row.avatar"/>
</span>
<span v-if="scope.row.type !== 1">
{{scope.row.member}}
</span>
</template>
</el-table-column>
<el-table-column label="封号时长" align="center" prop="forbidTime">
<template v-slot="scope">
<cai-dict-tag :options="forbidTimeList" :value="scope.row.forbidTime" />
</template>
</el-table-column>
<el-table-column label="理由" align="center" prop="reason"/>
<el-table-column label="封号时间" align="center" prop="createTime"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<div slot="footer" class="dialog-footer">
<el-button @click="open = false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import {forbidStatusList, forbidTimeList, forbidTypeList} from "@/constant/statusMap";
import {listUserForbidLog} from "@/api/cai/userForbidLog";
export default {
components: {
},
data () {
return {
forbidTimeList,forbidTypeList,forbidStatusList,
open: false,
// 遮罩层
loading: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 账户明细表格数据
userForbidLogList: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
type: undefined,
member: undefined,
forbidTime: undefined,
},
changeTypeList:[],
}
},
created() {
},
methods: {
init (member) {
this.open = true;
this.queryParams.member = member
this.getList();
},
/** 查询账户明细列表 */
getList() {
this.loading = true;
listUserForbidLog(this.queryParams).then(response => {
this.userForbidLogList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
}
}
</script>

View File

@@ -1,116 +1,65 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="" prop="member"> <el-form-item label="封号对象" prop="member">
<el-input <el-input
v-model="queryParams.member" v-model="queryParams.member"
placeholder="请输入" placeholder="请输入封号对象"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="封号时长 1.封6小时 2.封1天 3.封3天 4.封7天 5.封一个月 6.封10年" prop="forbidTime"> <el-form-item label="封号类型" prop="type">
<el-input <el-select v-model="queryParams.type" clearable size="small">
v-model="queryParams.forbidTime" <el-option
placeholder="请输入封号时长 1.封6小时 2.封1天 3.封3天 4.封7天 5.封一个月 6.封10年" v-for="dict in forbidTypeList"
clearable :key="dict.value"
:label="dict.label"
:value="dict.value"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="原始用户ID(后台编辑用)" prop="originUid"> <el-form-item label="封号时长" prop="forbidTime">
<el-input <el-select v-model="queryParams.forbidTime" clearable size="small">
v-model="queryParams.originUid" <el-option
placeholder="请输入原始用户ID(后台编辑用)" v-for="dict in forbidTimeList"
clearable :key="dict.value"
@keyup.enter.native="handleQuery" :label="dict.label"
/> :value="dict.value"
</el-form-item>
<el-form-item label="理由" prop="reason">
<el-input
v-model="queryParams.reason"
placeholder="请输入理由"
clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['cai:userForbidLog:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['cai:userForbidLog:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['cai:userForbidLog:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['cai:userForbidLog:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userForbidLogList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userForbidLogList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="类型" align="center" prop="type">
<el-table-column label="类型 1 封用户uid 2.封设备uuid 3.imei 4.mac" align="center" prop="type" /> <template v-slot="scope">
<el-table-column label="" align="center" prop="member" /> <cai-dict-tag :options="forbidTypeList" :value="scope.row.type" />
<el-table-column label="封号时长 1.封6小时 2.封1天 3.封3天 4.封7天 5.封一个月 6.封10年" align="center" prop="forbidTime" />
<el-table-column label="原始用户ID(后台编辑用)" align="center" prop="originUid" />
<el-table-column label="理由" align="center" prop="reason" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['cai:userForbidLog:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['cai:userForbidLog:remove']"
>删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="封号对象" align="center" prop="member" >
<template v-slot="scope">
<span v-if="scope.row.type === 1">
{{scope.row.nickname}}{{scope.row.member}}<image-avatar :src="scope.row.avatar"/>
</span>
<span v-if="scope.row.type !== 1">
{{scope.row.member}}
</span>
</template>
</el-table-column>
<el-table-column label="封号时长" align="center" prop="forbidTime">
<template v-slot="scope">
<cai-dict-tag :options="forbidTimeList" :value="scope.row.forbidTime" />
</template>
</el-table-column>
<el-table-column label="理由" align="center" prop="reason"/>
<el-table-column label="封号时间" align="center" prop="createTime"/>
</el-table> </el-table>
<pagination <pagination
@@ -120,40 +69,18 @@
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改封禁记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="" prop="member">
<el-input v-model="form.member" placeholder="请输入" />
</el-form-item>
<el-form-item label="封号时长 1.封6小时 2.封1天 3.封3天 4.封7天 5.封一个月 6.封10年" prop="forbidTime">
<el-input v-model="form.forbidTime" placeholder="请输入封号时长 1.封6小时 2.封1天 3.封3天 4.封7天 5.封一个月 6.封10年" />
</el-form-item>
<el-form-item label="原始用户ID(后台编辑用)" prop="originUid">
<el-input v-model="form.originUid" placeholder="请输入原始用户ID(后台编辑用)" />
</el-form-item>
<el-form-item label="理由" prop="reason">
<el-input v-model="form.reason" placeholder="请输入理由" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listUserForbidLog, getUserForbidLog, delUserForbidLog, addUserForbidLog, updateUserForbidLog } from "@/api/cai/userForbidLog"; import {listUserForbidLog} from "@/api/cai/userForbidLog";
import {forbidStatusList, forbidTimeList, forbidTypeList} from "@/constant/statusMap";
export default { export default {
name: "UserForbidLog", name: "UserForbidLog",
data() { data() {
return { return {
// 按钮loading forbidTimeList,forbidTypeList,forbidStatusList,
buttonLoading: false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
@@ -168,10 +95,6 @@ export default {
total: 0, total: 0,
// 封禁记录表格数据 // 封禁记录表格数据
userForbidLogList: [], userForbidLogList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@@ -179,35 +102,7 @@ export default {
type: undefined, type: undefined,
member: undefined, member: undefined,
forbidTime: undefined, forbidTime: undefined,
originUid: undefined,
reason: undefined
}, },
// 表单参数
form: {},
// 表单校验
rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型 1 封用户uid 2.封设备uuid 3.imei 4.mac不能为空", trigger: "change" }
],
member: [
{ required: true, message: "不能为空", trigger: "blur" }
],
forbidTime: [
{ required: true, message: "封号时长 1.封6小时 2.封1天 3.封3天 4.封7天 5.封一个月 6.封10年不能为空", trigger: "blur" }
],
createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" }
],
originUid: [
{ required: true, message: "原始用户ID(后台编辑用)不能为空", trigger: "blur" }
],
reason: [
{ required: true, message: "理由不能为空", trigger: "blur" }
]
}
}; };
}, },
created() { created() {
@@ -223,24 +118,6 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: undefined,
type: undefined,
member: undefined,
forbidTime: undefined,
createTime: undefined,
originUid: undefined,
reason: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
@@ -257,70 +134,6 @@ export default {
this.single = selection.length !== 1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加封禁记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getUserForbidLog(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改封禁记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateUserForbidLog(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addUserForbidLog(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除封禁记录编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delUserForbidLog(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('cai/userForbidLog/export', {
...this.queryParams
}, `userForbidLog_${new Date().getTime()}.xlsx`)
}
} }
}; };
</script> </script>