Files
peko-admin-web/src/views/accessRestriction/AccessRestriction.vue
2025-03-18 17:46:13 +08:00

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>