|
@@ -33,10 +33,17 @@
|
|
|
<a-input v-model:value="formState.port" placeholder="输入服务器端口" />
|
|
|
</a-form-item>
|
|
|
|
|
|
- <a-form-item ref="url" name="url">
|
|
|
+ <a-form-item v-if="formState.isedit === true" ref="url" name="url">
|
|
|
<label>url:</label>
|
|
|
- <a-input v-model:value="formState.url" placeholder="输入切换地址url"/>
|
|
|
+ <a-input v-model:value="formState.url" placeholder="输入切换地址url" />
|
|
|
</a-form-item>
|
|
|
+
|
|
|
+ <a-form-item v-if="formState.isedit === true" ref="UrlRecover" name="UrlRecover">
|
|
|
+ <label>UrlRecover:</label>
|
|
|
+ <a-input v-model:value="formState.UrlRecover" placeholder="输入恢复地址" />
|
|
|
+ </a-form-item>
|
|
|
+
|
|
|
+
|
|
|
<a-form-item ref="urlstatus" name="urlstatus">
|
|
|
<label>urlstatus:</label>
|
|
|
<a-input v-model:value="formState.urlstatus" placeholder="输入状态"/>
|
|
@@ -115,7 +122,7 @@
|
|
|
|
|
|
</a-table>
|
|
|
</template>
|
|
|
-
|
|
|
+
|
|
|
<script lang="ts">
|
|
|
import {
|
|
|
computed,
|
|
@@ -184,20 +191,25 @@ export default defineComponent({
|
|
|
key: 'port',
|
|
|
},
|
|
|
{
|
|
|
- title: '切换地址',
|
|
|
- key: 'url',
|
|
|
- dataIndex: 'url',
|
|
|
+ title: '下线地址',
|
|
|
+ key: 'url1',
|
|
|
+ dataIndex: 'url1',
|
|
|
},
|
|
|
{
|
|
|
- title: '更新时间',
|
|
|
- key: 'updateAt',
|
|
|
- dataIndex:'updateAt',
|
|
|
- },
|
|
|
- {
|
|
|
- title: '创建时间',
|
|
|
- key: 'createAt',
|
|
|
- dataIndex: 'createAt',
|
|
|
+ title: '恢复地址',
|
|
|
+ key: 'url2',
|
|
|
+ dataIndex: 'url2',
|
|
|
},
|
|
|
+ // {
|
|
|
+ // title: '更新时间',
|
|
|
+ // key: 'updateAt',
|
|
|
+ // dataIndex:'updateAt',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // title: '创建时间',
|
|
|
+ // key: 'createAt',
|
|
|
+ // dataIndex: 'createAt',
|
|
|
+ // },
|
|
|
{
|
|
|
title: 'PING类型',
|
|
|
key: 'pingType',
|
|
@@ -277,6 +289,7 @@ export default defineComponent({
|
|
|
data.host = node_list.data.nodeList[dataKey].Node.host
|
|
|
data.port = node_list.data.nodeList[dataKey].Node.port
|
|
|
data.url = node_list.data.nodeList[dataKey].Node.url
|
|
|
+ data.UrlRecover = node_list.data.nodeList[dataKey].Node.UrlRecover
|
|
|
data.updateAt = node_list.data.nodeList[dataKey].Node.updateAt
|
|
|
data.createAt = node_list.data.nodeList[dataKey].Node.createAt
|
|
|
data.pingType = node_list.data.nodeList[dataKey].Node.pingType
|
|
@@ -285,6 +298,8 @@ export default defineComponent({
|
|
|
data.urlRet = node_list.data.nodeList[dataKey].Node.urlRet
|
|
|
data.urlCount = node_list.data.nodeList[dataKey].Node.urlCount
|
|
|
data.isNotice = node_list.data.nodeList[dataKey].Node.isNotice
|
|
|
+ data.url1 = extractIpFromUrl(node_list.data.nodeList[dataKey].Node.url)
|
|
|
+ data.url2 = extractIpFromUrl(node_list.data.nodeList[dataKey].Node.UrlRecover)
|
|
|
if (node_list.data.nodeList[dataKey].NodeConfig != null)
|
|
|
{
|
|
|
for (let nodeConfig of node_list.data.nodeList[dataKey].NodeConfig) {
|
|
@@ -295,7 +310,11 @@ export default defineComponent({
|
|
|
}
|
|
|
state.datalist.push(data)
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+ formState.isedit = false
|
|
|
+ console.log(formState.isedit)
|
|
|
console.log(state.datalist);
|
|
|
}
|
|
|
// state.datalist = node_list.data.nodeList
|
|
@@ -320,6 +339,7 @@ export default defineComponent({
|
|
|
}
|
|
|
|
|
|
const editNode = async (data) => {
|
|
|
+
|
|
|
let ret = await editNodeReqUse(data)
|
|
|
if (ret.code == 0)
|
|
|
{
|
|
@@ -353,9 +373,17 @@ export default defineComponent({
|
|
|
|
|
|
}
|
|
|
|
|
|
- onMounted( () =>{
|
|
|
- getNodeList()
|
|
|
- })
|
|
|
+ onMounted(async () => {
|
|
|
+ try {
|
|
|
+ state.loading = true; // Show loading spinner or message
|
|
|
+ await getNodeList();
|
|
|
+ } catch (error) {
|
|
|
+ console.error("Failed to fetch data:", error);
|
|
|
+ // Handle errors, e.g., show an error message
|
|
|
+ } finally {
|
|
|
+ state.loading = false; // Hide loading spinner or message
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
const formState = reactive({
|
|
|
id: 0,
|
|
@@ -363,6 +391,7 @@ export default defineComponent({
|
|
|
host: "",
|
|
|
port: 22,
|
|
|
url: "",
|
|
|
+ UrlRecover: "",
|
|
|
pingType: undefined,
|
|
|
isedit : false,
|
|
|
urlstatus: 0,
|
|
@@ -396,6 +425,7 @@ export default defineComponent({
|
|
|
"host" : toRaw(formState).host,
|
|
|
"port" : toRaw(formState).port,
|
|
|
"url" : toRaw(formState).url,
|
|
|
+ "url_recover" : toRaw(formState).UrlRecover,
|
|
|
"pingType": toRaw(formState).pingType,
|
|
|
"urlstatus": toRaw(formState).urlstatus,
|
|
|
"isNotice": toRaw(formState).isNotice,
|
|
@@ -416,6 +446,7 @@ export default defineComponent({
|
|
|
formState.host = record.host
|
|
|
formState.port = record.port
|
|
|
formState.url = record.url
|
|
|
+ formState.UrlRecover = record.UrlRecover
|
|
|
formState.pingType = record.pingType
|
|
|
formState.urlstatus = record.urlstatus
|
|
|
formState.sshusername = record.Sshusername
|
|
@@ -428,13 +459,14 @@ export default defineComponent({
|
|
|
}
|
|
|
|
|
|
const showAddNode = () => {
|
|
|
+ formState.isedit = false
|
|
|
formState.name = ""
|
|
|
formState.host = ""
|
|
|
formState.port = 22
|
|
|
formState.url = ""
|
|
|
+ formState.UrlRecover = ""
|
|
|
formState.pingType = undefined
|
|
|
formState.urlstatus = 0
|
|
|
- formState.isedit = false
|
|
|
formState.sshpassword = ""
|
|
|
formState.sshcommand = ""
|
|
|
formState.sshusername = ""
|
|
@@ -469,6 +501,14 @@ export default defineComponent({
|
|
|
}
|
|
|
|
|
|
|
|
|
+ function extractIpFromUrl(url: string): string | null {
|
|
|
+ const ipRegex = /(\b25[0-5]\b|\b2[0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)\.(\b25[0-5]\b|\b2[0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)\.(\b25[0-5]\b|\b2[0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)\.(\b25[0-5]\b|\b2[0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)/;
|
|
|
+ const match = url.match(ipRegex);
|
|
|
+ return match ? match[0] : null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
return{
|
|
|
|
|
|
onDeleteALlNode,
|