m2pool_web_frontend/mining-pool/src/views/personalCenter/personalAPI/index.js

367 lines
10 KiB
JavaScript

import { watch } from "vue";
import { getApiKey, getApiList, getDelApi, getApiInfo ,getUpdateAPI} from "../../../api/APIkey";
export default {
data() {
return {
dialogVisible: false,
modifyDialogVisible: false,
params: {
ip: "",
perms: "",
},
listParams: {
page: 1,
limit: 10,
},
ApiKeyLoading: false,
checkList: [],
checkIp: true,
checkAll: false,
checkedItems: [],
apiList: [
{
remark: "测试备注",
jurisdiction: [
"矿工", "收益", "支付",
],
account: "afhaifhauhf",
coin: "BTC",
url: "https://www.m2pool.com/mining-user/10f74b7beb73e27e8d442e7958801fda?user_name=lx497681109",
},
{
remark: "测试备注",
jurisdiction: [
"矿工", "收益",
],
account: "afhaifddddhauhf",
coin: "BTC",
url: "https://www.m2pool.com/mining-user/10f74b7beb73e27e8d442e7958801fda?user_name=lx497681109",
},
],
jurisdictionList: [
{
value: "miner",
label: "personal.minerAPI"
},
{
value: "account",
label: "personal.accountApi"
},
{
value: "pool",
label: "personal.miningPoolApi"
},
],
apiPageLoading: false,
apiInfo: {
ip: "",
perms: [],
},
infoCheckIp: true,
modifyParams: {
id: "",
ip: "",
perms: "",
},
}
},
watch: {
infoCheckIp(val) {
if (val) {
this.apiInfo.ip = ""
}
},
checkIp(val) {
if (val) {
this.params.ip = ""
}
},
params:{
handler(newValue) {
if (newValue.ip) {
this.checkIp =false
}
},
deep: true,
}
},
mounted() {
this.fetchApiList(this.listParams)
this.registerRecoveryMethod('fetchApiList', this.listParams);
},
methods: {
async fetchApiKey(params) {
this.ApiKeyLoading = true
this.setLoading('ApiKeyLoading', true);
const data = await getApiKey(params)
if (data && data.code == 200) {
this.fetchApiList(this.listParams)
this.dialogVisible = false
}
this.setLoading('ApiKeyLoading', false);
},
async fetchApiList(params) {
this.apiPageLoading = true
const data = await getApiList(params)
if (data && data.code == 200) {
this.apiList = data.rows
}
this.setLoading('apiPageLoading', false);
},
async fetchApiInfo(params) {
this.apiPageLoading = true
const data = await getApiInfo(params)
if (data && data.code == 200) {
this.apiInfo = data.data
if (this.apiInfo.ip) {
this.infoCheckIp = false
}
}
this.setLoading('apiPageLoading', false);
},
async fetchUpdateAPI(params) {
this.apiPageLoading = true
const data = await getUpdateAPI(params)
if (data && data.code == 200) {
this.fetchApiList(this.listParams)
this.modifyDialogVisible =false
}
this.setLoading('apiPageLoading', false);
},
async fetchDelApi(params) {
this.apiPageLoading = true
const data = await getDelApi(params)
console.log(data, 666);
if (data && data.code == 200) {
this.checkedItems = []
this.fetchApiList(this.listParams)
}
this.setLoading('apiPageLoading', false);
},
RequestApiKey() {
this.dialogVisible = true
},
handelJurisdiction(subItem) {
let obj = this.jurisdictionList.find(item => subItem == item.value)
try {
if (obj.value) {
return obj.label
} else {
return ""
}
} catch {
console.log(111);
}
},
handelClose(){
this.params.ip = ""
this.checkList =[]
},
confirmAddition() {
if (!this.checkIp && !this.params.ip) {
this.$message({
showClose: true,
message: this.$t(`personal.ipAddressReminder`),
type: 'error'
});
return
}
const validPattern = /^[0-9.]*$/;
if (!validPattern.test(this.params.ip)) {
this.$message({
showClose: true,
message: this.$t(`personal.ipFormat`),
type: 'error'
});
return
}
if (this.checkList.length == 0) {
this.$message({
showClose: true,
message: this.$t(`personal.permissionReminder`),
type: 'error'
});
return
}
if (this.checkList.length > 0) {
this.params.perms = this.checkList.join(",")
}
this.fetchApiKey(this.params)
},
handleCheckAllChange(val) {
console.log(this.checkAll, val, 6565);
if (val) {
this.checkedItems = this.apiList.map(item => item.id);
} else {
this.checkedItems = []
}
},
handleSingleCheckChange(value) {
console.log(value, "value");
let checkedCount = value.length;
this.checkAll = checkedCount === this.apiList.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.apiList.length;
},
deleteSelected() {
let ids = this.checkedItems.join(",")
this.fetchDelApi({ ids: ids })
},
async handelCopy(id) {
// var d = document.getElementById(id) //获取需要复制的元素
// d.select() //选中
// document.execCommand("copy") //直接复制
var copyText = document.getElementById(id);
// 选中文本
copyText.select();
copyText.setSelectionRange(0, 99999); // 对于移动设备
// 执行复制命令
document.execCommand('copy');
// 可以通知用户复制成功
alert("文本已复制到剪贴板");
// try {
// await navigator.clipboard.writeText(d.value);
// this.$message({
// showClose: true,
// message: this.$t(`personal.copySuccessful`),
// type: 'success'
// });
// } catch (err) {
// console.log(err);
// this.$message({
// showClose: true,
// message: this.$t(`personal.copyFailed`),
// type: 'error'
// });
// }
},
handelSetUp(item) {
this.modifyParams.id= item.id
this.modifyDialogVisible = true
this.fetchApiInfo({ id: item.id })
},
modifyInformation() {
if (!this.infoCheckIp && !this.apiInfo.ip) {
this.$message({
showClose: true,
message: this.$t(`personal.ipAddressReminder`),
type: 'error'
});
return
}
if (this.apiInfo.perms.length == 0) {
this.$message({
showClose: true,
message: this.$t(`personal.permissionReminder`),
type: 'error'
});
return
}
if (this.apiInfo.perms.length > 0) {
this.modifyParams.perms = this.apiInfo.perms.join(",")
}
if (this.apiInfo.ip) {
this.modifyParams.ip = this.apiInfo.ip
}else if(this.infoCheckIp){
this.modifyParams.ip=""
}
this.fetchUpdateAPI(this.modifyParams)
},
clickCopy(item){
// 创建临时输入框
var tempInput = document.createElement('input');
tempInput.value = item.key;
document.body.appendChild(tempInput);
try {
tempInput.select();
const isCopySuccessful = document.execCommand('copy');
if (isCopySuccessful) {
this.$message({
showClose: true,
message: this.$t(`personal.copySuccessful`),
type: 'success',
});
} else {
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'success',
});
}
} catch (error) {
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'success',
});
} finally {
if (document.body.contains(tempInput)) {
document.body.removeChild(tempInput);
} else {
console.log('临时输入框不是 body 的子节点,无法移除。');
}
}
}
}
}