365 lines
9.8 KiB
Vue
365 lines
9.8 KiB
Vue
<template>
|
|
<div class="outer">
|
|
<div class="search">
|
|
<div class="searchLeft">
|
|
<span>平台ID</span>
|
|
<el-input
|
|
v-model="userId"
|
|
size="default"
|
|
placeholder="用户平台ID"
|
|
class="input"
|
|
></el-input>
|
|
</div>
|
|
<div class="searchLeft">
|
|
<span>邮箱</span>
|
|
<el-input
|
|
v-model="email"
|
|
size="default"
|
|
placeholder="邮箱"
|
|
class="input"
|
|
></el-input>
|
|
</div>
|
|
</div>
|
|
<!-- 按钮 -->
|
|
<div class="buttonBox">
|
|
<el-button class="primary" type="primary" size="default" @click="add()"
|
|
>新增</el-button
|
|
>
|
|
<el-button class="primary" type="primary" size="default" @click="search()"
|
|
>查询</el-button
|
|
>
|
|
</div>
|
|
<!-- 列表 -->
|
|
<el-table
|
|
v-loading="loading"
|
|
:data="tableData"
|
|
border
|
|
style="width: 100%; margin-top: 25px"
|
|
>
|
|
<el-table-column prop="erbanNo" align="center" label="用戶id" />
|
|
<el-table-column prop="nick" align="center" label="用戶昵称" />
|
|
<el-table-column prop="phone" align="center" label="手机号" />
|
|
<el-table-column prop="email" align="center" label="邮箱" />
|
|
<el-table-column prop="signTime" align="center" label="注册时间" />
|
|
<el-table-column prop="createTime" align="center" label="进入访问限制时间" />
|
|
<el-table-column prop="inviteCode" align="center" label="邀请码" />
|
|
<el-table-column prop="signDeviceId" align="center" label="注册设备" />
|
|
<el-table-column prop="deviceIds" align="center" label="访问设备" />
|
|
<el-table-column prop="lastCheckIpRegion" align="center" label="最近一次访问地点" />
|
|
<el-table-column align="center" label="平台"
|
|
><template v-slot="scope">{{
|
|
scope.row.os == "android" ? "安卓" : "苹果"
|
|
}}</template>
|
|
</el-table-column>
|
|
<el-table-column align="center" label="sim卡信息" width="150"
|
|
><template v-slot="scope">
|
|
<div v-html="tableArrFormat(scope.row)"></div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column align="center" label="系统语言" width="200">
|
|
<template v-slot="scope">
|
|
{{langFormat(scope.row.lang)}}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="reason" align="center" label="原因" />
|
|
<el-table-column align="center" label="操作" width="300">
|
|
<template v-slot="scope">
|
|
<el-button
|
|
@click="unfreeze(scope.row)"
|
|
class="primary"
|
|
type="primary"
|
|
size="default"
|
|
>解除限制</el-button
|
|
>
|
|
<el-button
|
|
@click="addWhite(scope.row)"
|
|
class="primary"
|
|
type="primary"
|
|
size="default"
|
|
>加入白名单</el-button
|
|
>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!-- 分页 -->
|
|
<el-pagination
|
|
style="margin-top: 10px"
|
|
class="paginationClass"
|
|
v-model:current-page="currentPage"
|
|
v-model:page-size="pageSize"
|
|
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500]"
|
|
:small="small"
|
|
:disabled="disabled"
|
|
:background="background"
|
|
layout="sizes, prev, pager, next"
|
|
:total="total"
|
|
@size-change="handleSizeChange"
|
|
@current-change="handleCurrentChange"
|
|
/>
|
|
<!-- 公共二次确认删除弹窗 -->
|
|
<el-dialog v-model="delDialog" title="提示" width="30%" center>
|
|
<span> {{ delDialogText }}</span>
|
|
<template #footer>
|
|
<span class="dialog-footer">
|
|
<el-button @click="delDialog = false">取消</el-button>
|
|
<el-button type="primary" @click="sureClick(val, type)"> 确认 </el-button>
|
|
</span>
|
|
</template>
|
|
</el-dialog>
|
|
<!-- 添加弹窗 -->
|
|
<el-dialog v-model="addSure" title="提示" width="30%" center>
|
|
<div class="selectBox">
|
|
<span class="left" style="margin-right: 20px">用户ID</span>
|
|
<el-input
|
|
v-model="selectUserId"
|
|
size="default"
|
|
placeholder="用户平台ID"
|
|
class="right"
|
|
style="width: 70%"
|
|
></el-input>
|
|
</div>
|
|
<template #footer>
|
|
<span class="dialog-footer">
|
|
<el-button @click="addSure = false">取消</el-button>
|
|
<el-button type="primary" @click="addSureClick()"> 添加 </el-button>
|
|
</span>
|
|
</template>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import {
|
|
recordPage,
|
|
addWhite,
|
|
relieve,
|
|
recordSave,
|
|
} from "@/api/AccessRestriction.vue/AccessRestriction.js";
|
|
import { ElMessage } from "element-plus";
|
|
export default {
|
|
name: "AccessRestriction",
|
|
data() {
|
|
return {
|
|
userId: undefined, //用戶id
|
|
email: undefined, //用戶id
|
|
loading: false, //列表loading
|
|
tableData: [], //列表数据
|
|
total: 10, //总页数
|
|
currentPage: 1, //页码
|
|
pageSize: 10, //条数
|
|
delDialog: false, //控制公共弹窗展示
|
|
delDialogText: "确定要解除限制吗?", //公共弹窗标题
|
|
type: null, //1解除限制 2加入白名单
|
|
obj: {}, //存放公共参数
|
|
addSure: false, //控制确认添加弹窗展示
|
|
selectUserId: "", //添加用户id
|
|
};
|
|
},
|
|
created() {
|
|
this.getData();
|
|
},
|
|
methods: {
|
|
// 初始化
|
|
getData() {
|
|
this.loading = true;
|
|
recordPage({
|
|
page: this.currentPage,
|
|
pageSize: this.pageSize,
|
|
userErBanNo: this.userId,
|
|
email: this.email,
|
|
}).then((res) => {
|
|
this.tableData = res.data.records;
|
|
this.loading = false;
|
|
this.total = res.data.total;
|
|
});
|
|
},
|
|
// 搜索
|
|
search() {
|
|
this.getData();
|
|
},
|
|
// 新增
|
|
add() {
|
|
this.addSure = true;
|
|
},
|
|
// 确认新增
|
|
addSureClick() {
|
|
this.addSure = false;
|
|
this.delDialogText = "确定要添加地区限制访问吗?";
|
|
this.delDialog = true;
|
|
this.type = 3;
|
|
},
|
|
// 解除限制按钮
|
|
unfreeze(row) {
|
|
console.log(row);
|
|
this.delDialogText = "确定要解除限制吗?";
|
|
this.delDialog = true;
|
|
this.type = 1;
|
|
this.obj = row;
|
|
},
|
|
// 加入白名单
|
|
addWhite(row) {
|
|
console.log(row);
|
|
this.delDialogText = "确定要加入白名单吗?";
|
|
this.delDialog = true;
|
|
this.type = 2;
|
|
this.obj = row;
|
|
},
|
|
// 二次确认
|
|
sureClick() {
|
|
if (this.type == 1) {
|
|
relieve({ uid: this.obj.uid }).then((res) => {
|
|
if (res.code == 200) {
|
|
ElMessage({
|
|
showClose: true,
|
|
message: res.message,
|
|
type: "success",
|
|
});
|
|
this.getData();
|
|
} else {
|
|
ElMessage({
|
|
showClose: true,
|
|
message: res.message,
|
|
type: "error",
|
|
});
|
|
}
|
|
});
|
|
} else if (this.type == 2) {
|
|
addWhite({ uid: this.obj.uid }).then((res) => {
|
|
if (res.code == 200) {
|
|
ElMessage({
|
|
showClose: true,
|
|
message: res.message,
|
|
type: "success",
|
|
});
|
|
this.getData();
|
|
} else {
|
|
ElMessage({
|
|
showClose: true,
|
|
message: res.message,
|
|
type: "error",
|
|
});
|
|
}
|
|
});
|
|
}
|
|
if (this.type == 3) {
|
|
recordSave({ erBanNoStr: this.selectUserId }).then((res) => {
|
|
if (res.code == 200) {
|
|
this.selectUserId = "";
|
|
ElMessage({
|
|
showClose: true,
|
|
message: res.message,
|
|
type: "success",
|
|
});
|
|
this.getData();
|
|
} else {
|
|
ElMessage({
|
|
showClose: true,
|
|
message: res.message,
|
|
type: "error",
|
|
});
|
|
}
|
|
});
|
|
}
|
|
this.getData();
|
|
this.delDialog = false;
|
|
},
|
|
// 分页导航
|
|
handleSizeChange(val) {
|
|
this.getData();
|
|
},
|
|
handleCurrentChange(val) {
|
|
this.getData();
|
|
},
|
|
// sim格式化
|
|
tableArrFormat(val) {
|
|
// console.log("aaaaaaaaaaaaa", val.simCards);
|
|
var str = "";
|
|
if (!val.simCards) {
|
|
return;
|
|
}
|
|
val.simCards.forEach((res, i) => {
|
|
str += `
|
|
sim卡${i + 1}: ${
|
|
res == 452
|
|
? "越南"
|
|
: res == 454
|
|
? "香港"
|
|
: res == 460
|
|
? "中国"
|
|
: res == 466
|
|
? "台湾"
|
|
: res == 456
|
|
? "柬埔寨"
|
|
: res == 502
|
|
? "马来西亚"
|
|
: res == 525
|
|
? "新加坡"
|
|
: res == 510
|
|
? "印尼"
|
|
: res == 414
|
|
? "缅甸"
|
|
: res == 515
|
|
? "菲律宾"
|
|
: res == 520
|
|
? "泰国"
|
|
: res == 457
|
|
? "老挝"
|
|
: res
|
|
}<br>
|
|
`;
|
|
});
|
|
return str;
|
|
},
|
|
// sim格式化
|
|
langFormat(val) {
|
|
var str = "";
|
|
if (val == null) {
|
|
str = "空";
|
|
}else if(val.match(/cn/gi)||val.match(/hans/gi)){
|
|
str = `${val}【简体中文】`;
|
|
}else if(val.match(/tw/gi)||val.match(/hant/gi)||val.match(/hk/gi)||val.match(/mo/gi)){
|
|
str = `${val}【繁体中文】`;
|
|
}else{
|
|
str = val;
|
|
}
|
|
return str;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="less" scoped>
|
|
.outer {
|
|
padding-top: 20px;
|
|
background: #ecf0f5;
|
|
border-top: 3px solid #d2d6de;
|
|
.search {
|
|
width: 100%;
|
|
height: 41px;
|
|
.searchLeft,
|
|
.searchRight {
|
|
width: 20%;
|
|
float: left;
|
|
span {
|
|
margin-right: 10px;
|
|
}
|
|
.input {
|
|
width: 75%;
|
|
}
|
|
}
|
|
}
|
|
.buttonBox {
|
|
margin-top: 10px;
|
|
}
|
|
.authorityBox {
|
|
.authoritySpan {
|
|
margin-right: 20px;
|
|
}
|
|
.authorityInpput {
|
|
width: 50%;
|
|
}
|
|
}
|
|
.dialogTableVisibleBut {
|
|
margin: -25px 0 20px 0px;
|
|
}
|
|
}
|
|
</style>
|