367 lines
10 KiB
JavaScript
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 的子节点,无法移除。');
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|