1、收码
This commit is contained in:
695
cli-traffic.html
695
cli-traffic.html
@ -78,35 +78,51 @@
|
|||||||
<!-- 左侧菜单 -->
|
<!-- 左侧菜单 -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<vs-sidebar
|
<vs-sidebar
|
||||||
static-position
|
static-position
|
||||||
:hidden-background="true"
|
:hidden-background="true"
|
||||||
default-index="2"
|
default-index="2"
|
||||||
color="primary"
|
color="primary"
|
||||||
spacer
|
spacer
|
||||||
v-model="active"
|
v-model="active"
|
||||||
>
|
|
||||||
<vs-sidebar-item
|
|
||||||
index="1"
|
|
||||||
@click="handleActiveMenu(1)"
|
|
||||||
icon="settings"
|
|
||||||
>长效IP</vs-sidebar-item
|
|
||||||
>
|
>
|
||||||
<vs-sidebar-item
|
<vs-sidebar-group open title="代理管理">
|
||||||
index="2"
|
|
||||||
@click="handleActiveMenu(2)"
|
<vs-sidebar-item
|
||||||
icon="dashboard"
|
index="1"
|
||||||
>
|
@click="handleActiveMenu(1)"
|
||||||
账密模式
|
icon="settings"
|
||||||
</vs-sidebar-item>
|
>长效IP</vs-sidebar-item
|
||||||
<!--
|
>
|
||||||
<vs-sidebar-item index="3" icon="people">用户管理</vs-sidebar-item> -->
|
<vs-sidebar-item
|
||||||
</vs-sidebar>
|
index="2"
|
||||||
|
@click="handleActiveMenu(2)"
|
||||||
|
icon="dashboard"
|
||||||
|
>
|
||||||
|
账密模式
|
||||||
|
</vs-sidebar-item>
|
||||||
|
</vs-sidebar-group>
|
||||||
|
<vs-sidebar-group open title="号码管理">
|
||||||
|
<vs-sidebar-item
|
||||||
|
index="3"
|
||||||
|
@click="handleActiveMenu(3)"
|
||||||
|
icon="settings"
|
||||||
|
>短效号码</vs-sidebar-item
|
||||||
|
>
|
||||||
|
<vs-sidebar-item
|
||||||
|
index="4"
|
||||||
|
@click="handleActiveMenu(4)"
|
||||||
|
icon="dashboard"
|
||||||
|
>
|
||||||
|
长效号码
|
||||||
|
</vs-sidebar-item>
|
||||||
|
</vs-sidebar-group>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 内容展示区 -->
|
<!-- 内容展示区 -->
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-conter">
|
<div class="content-conter">
|
||||||
<div class="content-conter-header">
|
<div class="content-conter-header" v-if="activeMenu === 1||activeMenu===2">
|
||||||
<vs-select
|
<vs-select
|
||||||
autocomplete
|
autocomplete
|
||||||
v-model="query.area"
|
v-model="query.area"
|
||||||
@ -169,6 +185,48 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="content-conter-header" v-if="activeMenu === 3||activeMenu===4">
|
||||||
|
<vs-select
|
||||||
|
autocomplete
|
||||||
|
v-model="smsQuery.serviceCode"
|
||||||
|
autocomplete
|
||||||
|
class="selectExample"
|
||||||
|
placeholder="服务"
|
||||||
|
label="服务"
|
||||||
|
>
|
||||||
|
<vs-select-item
|
||||||
|
v-for="item in smsServices"
|
||||||
|
:key="'sms_service_'+item.code"
|
||||||
|
:value="item.code"
|
||||||
|
:text="item.name"
|
||||||
|
@click="handleSmsServiceChange(item)"
|
||||||
|
></vs-select-item>
|
||||||
|
</vs-select>
|
||||||
|
|
||||||
|
<div class="btn-group">
|
||||||
|
<vs-button color="primary" size="small" @click="reloadSmsList"
|
||||||
|
>查询</vs-button
|
||||||
|
>
|
||||||
|
<vs-button
|
||||||
|
color="primary"
|
||||||
|
type="border"
|
||||||
|
size="small"
|
||||||
|
@click="handleResetSmsList"
|
||||||
|
>
|
||||||
|
重置
|
||||||
|
</vs-button>
|
||||||
|
|
||||||
|
<vs-button
|
||||||
|
color="primary"
|
||||||
|
type="border"
|
||||||
|
size="small"
|
||||||
|
@click="handleShowGetSms"
|
||||||
|
>租赁号码</vs-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<vs-row v-if="activeMenu === 2">
|
<vs-row v-if="activeMenu === 2">
|
||||||
<vs-table class="tablex" :data="proxys">
|
<vs-table class="tablex" :data="proxys">
|
||||||
<template slot="thead">
|
<template slot="thead">
|
||||||
@ -231,7 +289,7 @@
|
|||||||
icon="qr_code"
|
icon="qr_code"
|
||||||
@click="handleShowQrCode(data[indextr],2)"
|
@click="handleShowQrCode(data[indextr],2)"
|
||||||
></vs-button>
|
></vs-button>
|
||||||
<vs-button
|
<!-- <vs-button
|
||||||
style="margin-left: 10px"
|
style="margin-left: 10px"
|
||||||
class="operat-btn"
|
class="operat-btn"
|
||||||
v-if="data[indextr].status === 1"
|
v-if="data[indextr].status === 1"
|
||||||
@ -239,7 +297,7 @@
|
|||||||
color="primary"
|
color="primary"
|
||||||
@click="handleResetGenerateProxy(data[indextr])"
|
@click="handleResetGenerateProxy(data[indextr])"
|
||||||
>重置</vs-button
|
>重置</vs-button
|
||||||
>
|
> -->
|
||||||
<vs-button v-if="data[indextr].status === 1"
|
<vs-button v-if="data[indextr].status === 1"
|
||||||
color="rgb(187, 138, 200)"
|
color="rgb(187, 138, 200)"
|
||||||
class="operat-btn"
|
class="operat-btn"
|
||||||
@ -258,7 +316,7 @@
|
|||||||
/>
|
/>
|
||||||
</vs-row>
|
</vs-row>
|
||||||
|
|
||||||
<vs-row v-else>
|
<vs-row v-else-if="activeMenu===1">
|
||||||
<vs-table class="tablex" :data="proxys">
|
<vs-table class="tablex" :data="proxys">
|
||||||
<template slot="thead">
|
<template slot="thead">
|
||||||
<vs-th> 国家/地区 </vs-th>
|
<vs-th> 国家/地区 </vs-th>
|
||||||
@ -326,59 +384,121 @@
|
|||||||
@change="getMyProxy"
|
@change="getMyProxy"
|
||||||
/>
|
/>
|
||||||
</vs-row>
|
</vs-row>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div v-else-if="activeMenu===1" class="content-conter">
|
<!--短效号码-->
|
||||||
<div class="content-conter-header">
|
<vs-row v-else-if="activeMenu===3">
|
||||||
<vs-select
|
<vs-table class="tablex" :data="smsList">
|
||||||
v-model="query.area"
|
<template slot="thead">
|
||||||
autocomplete
|
<vs-th> 服务 </vs-th>
|
||||||
class="selectExample"
|
<vs-th> Phone </vs-th>
|
||||||
placeholder="area"
|
<vs-th> 验证码 </vs-th>
|
||||||
label="国家/地区"
|
<vs-th> 状态 </vs-th>
|
||||||
>
|
<vs-th> 操作 </vs-th>
|
||||||
<vs-select-item
|
</template>
|
||||||
v-for="item in traffictList"
|
|
||||||
:key="'area'+item.code"
|
<template slot-scope="{data}">
|
||||||
:value="item.code"
|
<vs-tr :key="indextr" v-for="(tr, indextr) in data">
|
||||||
:text="item.name"
|
<vs-td :data="data[indextr].service">
|
||||||
@click="handleAreaChange(item)"
|
{{data[indextr].service}}
|
||||||
></vs-select-item>
|
</vs-td>
|
||||||
</vs-select>
|
|
||||||
<vs-select
|
<vs-td :data="data[indextr].phone">
|
||||||
v-model="query.state"
|
{{data[indextr].phone}}
|
||||||
class="selectExample"
|
</vs-td>
|
||||||
label="城市"
|
<vs-td :data="data[indextr].code">
|
||||||
placeholder="city"
|
{{data[indextr].code}}
|
||||||
>
|
</vs-td>
|
||||||
<vs-select-item
|
<vs-td :data="data[indextr].status">
|
||||||
v-for="(item,index) in cityList"
|
<vs-chip v-if="data[indextr].status===0" transparent color="primary">未唤醒</vs-chip>
|
||||||
:key="'city'+index"
|
<vs-chip v-else-if="data[indextr].status===1" transparent color="primary">等待中</vs-chip>
|
||||||
:value="item.state"
|
<vs-chip v-else-if="data[indextr].status===2" transparent color="success">已使用</vs-chip>
|
||||||
:text="item.state"
|
<vs-chip v-else-if="data[indextr].status===3" transparent color="warning">过期</vs-chip>
|
||||||
></vs-select-item>
|
</vs-td>
|
||||||
</vs-select>
|
|
||||||
<vs-button color="primary" size="small" @click="getMyProxy"
|
<vs-td :data="data[indextr].id">
|
||||||
>查询</vs-button
|
<!-- <vs-button
|
||||||
>
|
v-if="data[indextr].status === 1||(data[indextr].type===1&&new Date().getTime()<data[indextr].expireUnix)"
|
||||||
<vs-button
|
color="success"
|
||||||
color="primary"
|
type="flat"
|
||||||
type="border"
|
size="small"
|
||||||
size="small"
|
icon="qr_code"
|
||||||
@click="handleGetProxy"
|
@click="handleShowQrCode(data[indextr],1)"
|
||||||
>获取代理</vs-button
|
></vs-button> -->
|
||||||
>
|
<vs-button color="warning" size="small" @click="handleDeleteSms(data[indextr])">
|
||||||
<vs-button
|
删除
|
||||||
color="warning"
|
</vs-button>
|
||||||
type="border"
|
</vs-tr>
|
||||||
size="small"
|
</template>
|
||||||
@click="handleRecharge"
|
</vs-table>
|
||||||
>
|
<vs-pagination
|
||||||
余额充值
|
v-model:current-page="smsQuery.page"
|
||||||
</vs-button>
|
:total="smsQuery.total"
|
||||||
</div>
|
:page-size="smsQuery.pageSize"
|
||||||
|
@change="getSmsList"
|
||||||
</div> -->
|
/>
|
||||||
|
</vs-row>
|
||||||
|
|
||||||
|
<!--长效-->
|
||||||
|
<vs-row v-else-if="activeMenu===4">
|
||||||
|
<vs-table class="tablex" :data="smsList">
|
||||||
|
<template slot="thead">
|
||||||
|
<vs-th> 服务 </vs-th>
|
||||||
|
<vs-th> Phone </vs-th>
|
||||||
|
<vs-th> 期限(月)</vs-th>
|
||||||
|
<vs-th> 验证码 </vs-th>
|
||||||
|
<vs-th> 状态 </vs-th>
|
||||||
|
<vs-th> 过期时间 </vs-th>
|
||||||
|
<vs-th> 操作 </vs-th>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot-scope="{data}">
|
||||||
|
<vs-tr :key="indextr" v-for="(tr, indextr) in data">
|
||||||
|
<vs-td :data="data[indextr].service">
|
||||||
|
{{data[indextr].service}}
|
||||||
|
</vs-td>
|
||||||
|
|
||||||
|
<vs-td :data="data[indextr].phone">
|
||||||
|
{{data[indextr].phone}}
|
||||||
|
</vs-td>
|
||||||
|
<vs-td :data="data[indextr].period">
|
||||||
|
{{data[indextr].period}}
|
||||||
|
</vs-td>
|
||||||
|
<vs-td :data="data[indextr].code">
|
||||||
|
{{data[indextr].code}}
|
||||||
|
</vs-td>
|
||||||
|
<vs-td :data="data[indextr].status">
|
||||||
|
<vs-chip v-if="data[indextr].status===0" transparent color="primary">未唤醒</vs-chip>
|
||||||
|
<vs-chip v-else-if="data[indextr].status===1" transparent color="primary">等待中</vs-chip>
|
||||||
|
<vs-chip v-else-if="data[indextr].status===2" transparent color="success">已使用</vs-chip>
|
||||||
|
<vs-chip v-else-if="data[indextr].status===3" transparent color="warning">过期</vs-chip>
|
||||||
|
</vs-td>
|
||||||
|
|
||||||
|
<vs-td :data="data[indextr].expireTime">
|
||||||
|
{{formatDate(data[indextr].expireTime)}}
|
||||||
|
</vs-td>
|
||||||
|
<vs-td :data="data[indextr].id">
|
||||||
|
<vs-button
|
||||||
|
v-if="data[indextr].status !== 1&&new Date()<new Date(data[indextr].expireTime)"
|
||||||
|
color="primary"
|
||||||
|
size="small"
|
||||||
|
@click="handleWeakUp(data[indextr],1)"
|
||||||
|
>唤醒并获取</vs-button>
|
||||||
|
<vs-button color="warning" size="small" @click="handleDeleteSms(data[indextr])">
|
||||||
|
删除
|
||||||
|
</vs-button>
|
||||||
|
</vs-tr>
|
||||||
|
</template>
|
||||||
|
</vs-table>
|
||||||
|
<vs-pagination
|
||||||
|
v-model:current-page="smsQuery.page"
|
||||||
|
:total="smsQuery.total"
|
||||||
|
:page-size="smsQuery.pageSize"
|
||||||
|
@change="getSmsList"
|
||||||
|
/>
|
||||||
|
</vs-row>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -567,7 +687,37 @@
|
|||||||
:active.sync="showQrCode"
|
:active.sync="showQrCode"
|
||||||
>
|
>
|
||||||
<div id="proxy-qrcode"></div>
|
<div id="proxy-qrcode"></div>
|
||||||
<!-- <div style="padding-top: 15px">socks5:{{}}</div> -->
|
</vs-popup>
|
||||||
|
|
||||||
|
<!--获取号码-->
|
||||||
|
<vs-popup title="租赁号码" :active.sync="showGetSms" :loading="loading">
|
||||||
|
<div>
|
||||||
|
<vs-select
|
||||||
|
autocomplete
|
||||||
|
v-model="smsForm.serviceCode"
|
||||||
|
autocomplete
|
||||||
|
class="selectExample"
|
||||||
|
placeholder="请选择服务"
|
||||||
|
label="服务"
|
||||||
|
>
|
||||||
|
<vs-select-item
|
||||||
|
v-for="item in smsServices"
|
||||||
|
:key="'form_service'+item.code"
|
||||||
|
:value="item.code"
|
||||||
|
:text="item.name"
|
||||||
|
></vs-select-item>
|
||||||
|
</vs-select>
|
||||||
|
</div>
|
||||||
|
<div class="form-item" v-if="smsForm.type===1">
|
||||||
|
<vs-input class="inputx" placeholder="租赁月份" label="租赁月份" v-model="smsForm.period"/>
|
||||||
|
</div>
|
||||||
|
<div class="form-item" style="text-align: right;">
|
||||||
|
价格U: {{ this.smsForm.type===1&&this.smsForm.period>0? this.smsPrice*this.smsForm.period :this.smsPrice}}
|
||||||
|
</div>
|
||||||
|
<div class="form-item" style="text-align: right">
|
||||||
|
<vs-button size="small" @click="getNumber"
|
||||||
|
>确认租赁</vs-button>
|
||||||
|
</div>
|
||||||
</vs-popup>
|
</vs-popup>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
@ -619,6 +769,21 @@
|
|||||||
trafficServer: [],
|
trafficServer: [],
|
||||||
//可提取ip列表
|
//可提取ip列表
|
||||||
useList: [],
|
useList: [],
|
||||||
|
//短信服务列表
|
||||||
|
smsServices:[],
|
||||||
|
//短信query
|
||||||
|
smsQuery:{
|
||||||
|
page:1,
|
||||||
|
pageSize:50,
|
||||||
|
total:0,
|
||||||
|
serviceCode:"",
|
||||||
|
},
|
||||||
|
//短信列表
|
||||||
|
smsList:[],
|
||||||
|
showGetSms:false,
|
||||||
|
smsForm:{},
|
||||||
|
checkSmsCodeTimer:null,
|
||||||
|
smsPrice:undefined
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -634,9 +799,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.resetSmsForm();
|
||||||
|
|
||||||
this.getMyProxy();
|
this.getMyProxy();
|
||||||
this.getTraffictList();
|
this.getTraffictList();
|
||||||
this.getTrafficServer();
|
this.getTrafficServer();
|
||||||
|
this.getSmsServices();
|
||||||
|
|
||||||
|
//定时器
|
||||||
|
this.createCheckSmsCodeTimer();
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
showGetProxy(val, oldVal) {
|
showGetProxy(val, oldVal) {
|
||||||
@ -676,6 +847,25 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getSmsServices(){
|
||||||
|
fetch(requestApi + "/sms-services/list", {
|
||||||
|
headers:{
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
console.log('getSmsServices',response);
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.smsServices = response.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log("获取服务错误:",error);
|
||||||
|
});
|
||||||
|
},
|
||||||
showLoading(ref) {
|
showLoading(ref) {
|
||||||
// ref.$el.setAttribute("disabled", true);
|
// ref.$el.setAttribute("disabled", true);
|
||||||
this.$vs.loading();
|
this.$vs.loading();
|
||||||
@ -994,7 +1184,27 @@
|
|||||||
},
|
},
|
||||||
handleActiveMenu(index) {
|
handleActiveMenu(index) {
|
||||||
this.activeMenu = index;
|
this.activeMenu = index;
|
||||||
this.reloadList();
|
console.log('index',index);
|
||||||
|
switch(index){
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
this.reloadList();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
this.smsForm.type=0;
|
||||||
|
this.smsForm.serviceCode="";
|
||||||
|
this.smsForm.period=undefined;
|
||||||
|
this.reloadSmsList();
|
||||||
|
this.handleGetPrice(this.smsForm.type);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
this.smsForm.type=1;
|
||||||
|
this.smsForm.serviceCode="";
|
||||||
|
this.smsForm.period=undefined;
|
||||||
|
this.reloadSmsList();
|
||||||
|
this.handleGetPrice(this.smsForm.type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
reloadList() {
|
reloadList() {
|
||||||
this.query.pageIndex = 1;
|
this.query.pageIndex = 1;
|
||||||
@ -1029,8 +1239,6 @@
|
|||||||
);
|
);
|
||||||
|
|
||||||
this.query.total = total;
|
this.query.total = total;
|
||||||
|
|
||||||
console.log("proxys", this.proxys);
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
@ -1317,6 +1525,325 @@
|
|||||||
this.hiddenLoading();
|
this.hiddenLoading();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
//sms service切换
|
||||||
|
handleSmsServiceChange(item){
|
||||||
|
this.smsQuery.serviceCode=item.code;
|
||||||
|
},
|
||||||
|
//重置sms列表
|
||||||
|
handleResetSmsList(){
|
||||||
|
this.smsQuery.serviceCode="";
|
||||||
|
this.smsQuery.page=1;
|
||||||
|
|
||||||
|
this.getSmsList();
|
||||||
|
},
|
||||||
|
//查询sms
|
||||||
|
reloadSmsList(){
|
||||||
|
this.smsQuery.page=1;
|
||||||
|
this.getSmsList();
|
||||||
|
},
|
||||||
|
//获取sms列表
|
||||||
|
getSmsList(){
|
||||||
|
this.showLoading();
|
||||||
|
let type=0;
|
||||||
|
|
||||||
|
if(this.activeMenu===4){
|
||||||
|
type=1
|
||||||
|
}
|
||||||
|
|
||||||
|
let query = {
|
||||||
|
type:type,
|
||||||
|
pageIndex: this.smsQuery.page,
|
||||||
|
pageSize: this.smsQuery.pageSize,
|
||||||
|
serviceCode: this.smsQuery.serviceCode,
|
||||||
|
};
|
||||||
|
|
||||||
|
const queryString = new URLSearchParams(query).toString();
|
||||||
|
fetch(requestApi + "/sms-phone/list?" + queryString, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
}})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
console.log(response);
|
||||||
|
this.smsList = response.data.list;
|
||||||
|
let total = Math.ceil(
|
||||||
|
response.data.count / this.smsQuery.pageSize
|
||||||
|
);
|
||||||
|
|
||||||
|
this.smsQuery.total = total;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.hiddenLoading();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//显示租赁弹框
|
||||||
|
handleShowGetSms(){
|
||||||
|
this.smsForm.period=undefined;
|
||||||
|
this.smsForm.serviceCode="";
|
||||||
|
this.showGetSms = true;
|
||||||
|
},
|
||||||
|
resetSmsForm(){
|
||||||
|
let type =0;
|
||||||
|
|
||||||
|
if (this.activeMenu === 4) {
|
||||||
|
type = 1;
|
||||||
|
}
|
||||||
|
this.smsForm={
|
||||||
|
serviceCode: "",
|
||||||
|
period:undefined,
|
||||||
|
type:type,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//获取号码
|
||||||
|
getNumber(){
|
||||||
|
if(!this.smsForm.serviceCode){
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "danger",
|
||||||
|
text: "请选择服务",
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.smsForm.type===1&& (this.smsForm.period===undefined||this.smsForm.period<=0)){
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "danger",
|
||||||
|
text: "请填写时间",
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let data = JSON.stringify({
|
||||||
|
serviceCode: this.smsForm.serviceCode,
|
||||||
|
type: this.smsForm.type,
|
||||||
|
period: Number(this.smsForm.period),
|
||||||
|
})
|
||||||
|
|
||||||
|
this.showLoading();
|
||||||
|
|
||||||
|
fetch(requestApi + "/sms-phone/getNumber", {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
},
|
||||||
|
method: "POST",
|
||||||
|
body: data,
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "success",
|
||||||
|
text: "获取成功",
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
|
||||||
|
this.showGetSms = false;
|
||||||
|
this.getSmsList();
|
||||||
|
this.user.balance=response.data;
|
||||||
|
} else {
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "danger",
|
||||||
|
text: response.msg,
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.hiddenLoading();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//查看接受中的验证码
|
||||||
|
getCodeByActivationIds(){
|
||||||
|
if(this.smsList&&this.smsList.length>0){
|
||||||
|
let activationIds=this.smsList.filter(x=>x.status===1).map(x=>x.activationId)
|
||||||
|
|
||||||
|
if(activationIds.length<=0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const params = new URLSearchParams();
|
||||||
|
activationIds.forEach(id => {
|
||||||
|
params.append('activationIds', id); // Appends 'activationIds=123', 'activationIds=456', etc.
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch(`${requestApi}/sms-phone/getCodeByActivationId?${params}`, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
const codesMap = new Map();
|
||||||
|
response.data.forEach(item => {
|
||||||
|
codesMap.set(item.activationId, item);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(codesMap);
|
||||||
|
|
||||||
|
this.smsList.forEach(item => {
|
||||||
|
const newItem = codesMap.get(item.activationId); // 尝试从 Map 中获取新 code
|
||||||
|
|
||||||
|
if (newItem.status !== item.status) { // 如果找到了匹配的 activationId
|
||||||
|
item.code = newItem.code; // 替换 code
|
||||||
|
item.status = newItem.status; // 修改 status 为 2
|
||||||
|
}})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//定时检查等待中的验证码
|
||||||
|
createCheckSmsCodeTimer() {
|
||||||
|
if (this.checkSmsCodeTimer) {
|
||||||
|
clearInterval(this.checkSmsCodeTimer);
|
||||||
|
} else {
|
||||||
|
this.checkSmsCodeTimer = setInterval(() => {
|
||||||
|
this.getCodeByActivationIds(this.rechargeData.orderNo);
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleWeakUp(row,index){
|
||||||
|
if(row.status===1){
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "danger",
|
||||||
|
text: "无需重复唤醒",
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.showLoading();
|
||||||
|
let data = JSON.stringify({
|
||||||
|
activationId: row.activationId,
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch(requestApi + "/sms-phone/weakUp", {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
},
|
||||||
|
method: "POST",
|
||||||
|
body: data,
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "success",
|
||||||
|
text: "唤醒成功",
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
|
||||||
|
this.getSmsList();
|
||||||
|
} else {
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "danger",
|
||||||
|
text: response.msg,
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.hiddenLoading();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleDeleteSms(row){
|
||||||
|
this.$vs.dialog({
|
||||||
|
color:"primary",
|
||||||
|
title: `提示`,
|
||||||
|
text: `确定要删除[${row.phone}]?`,
|
||||||
|
acceptText:"确定",
|
||||||
|
accept:() => this.deleteSms(row)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
deleteSms(row){
|
||||||
|
this.showLoading();
|
||||||
|
|
||||||
|
let data = JSON.stringify({
|
||||||
|
id:row.id});
|
||||||
|
fetch(requestApi + "/sms-phone/my-number", {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
},
|
||||||
|
method: "DELETE",
|
||||||
|
body: data,
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "success",
|
||||||
|
text: "删除成功",
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
|
||||||
|
this.getSmsList();
|
||||||
|
} else {
|
||||||
|
this.$vs.notify({
|
||||||
|
title: "提示",
|
||||||
|
color: "danger",
|
||||||
|
text: response.msg,
|
||||||
|
position: "top-right",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.hiddenLoading();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleGetPrice(type){
|
||||||
|
fetch(requestApi + "/sms-services/price?type=" + type, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${this.token}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Accept: "application/json",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((response) => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.smsPrice = response.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@ -1455,5 +1982,9 @@
|
|||||||
.operat-btn{
|
.operat-btn{
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-item{
|
||||||
|
padding-top: 10px
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user