增加加速协议的展示

This commit is contained in:
lys 2026-04-15 10:54:41 +08:00
parent c39189eeef
commit b9c6604a06
2 changed files with 38 additions and 19 deletions

View File

@ -65,11 +65,13 @@ export const delNode = (id: string | number | Array<string | number>) => {
/**
* Xray
* @param nodeId ID
* @param forceRestart
*/
export const startXray = (nodeId: string | number): AxiosPromise<XrayStartResult> => {
export const startXray = (nodeId: string | number, forceRestart: boolean = false): AxiosPromise<XrayStartResult> => {
return request({
url: '/net/node/xray/start/' + nodeId,
method: 'post'
method: 'post',
params: { forceRestart }
});
};

View File

@ -94,7 +94,7 @@
<el-table-column v-if="columns[7].visible" label="父节点" align="center" prop="parentNodeId" />
<el-table-column v-if="columns[8].visible" label="流量倍率" align="center" prop="flowRate" />
<el-table-column v-if="columns[9].visible" label="路由组" align="center" prop="routeIds" />
<el-table-column v-if="columns[10].visible" label="加速协议" align="center" prop="protocolType">
<el-table-column v-if="columns[10].visible" label="加速协议" align="center" prop="protocolType" min-width="100">
<template #default="scope">
<dict-tag :options="net_protocol_type" :value="scope.row.protocolType"/>
</template>
@ -277,7 +277,7 @@
v-for="dict in node_soft_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
@ -311,6 +311,16 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="加密类型" prop="flow" v-if="form.protocolType=='vless'">
<el-select v-model="form.flow" placeholder="请选择加密类型">
<el-option
v-for="dict in net_flow"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="开启状态" prop="enableFlag">
<el-radio-group v-model="form.enableFlag">
<el-radio
@ -373,16 +383,6 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="加密类型" prop="flow" v-if="form.tlsType=='reality'">
<el-select v-model="form.flow" placeholder="请选择加密类型">
<el-option
v-for="dict in net_flow"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="伪装域名" prop="disguiseServerName" v-if="form.tlsType=='reality'">
<el-input v-model="form.disguiseServerName" placeholder="请输入伪装域名" />
</el-form-item>
@ -584,7 +584,7 @@
import { listNode, getNode, delNode, addNode, updateNode, startXray, stopXray } from '@/api/net/node';
import { NodeVO, NodeQuery, NodeForm, XrayStartResponse } from '@/api/net/node/types';
import { listAll } from '@/api/net/serverRoute';
import { ElNotification } from 'element-plus';
import { ElNotification, ElMessageBox } from 'element-plus';
import { ServerRouteVO } from '@/api/net/serverRoute/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -659,12 +659,29 @@ const handleDetail = async (row: NodeVO) => {
/** 启动 Xray */
const handleStartXray = async (row: NodeVO) => {
const confirm = await proxy?.$modal.confirm('是否确认启动节点 "' + row.nodeName + '" 的 Xray 服务?');
if (!confirm) return;
let forceRestart = false;
// Xray
if (row.xrayStatus) {
const confirm = await ElMessageBox.confirm(
'该节点的 Xray 服务已在运行中,是否强制重启?',
'提示',
{
confirmButtonText: '强制重启',
cancelButtonText: '取消',
type: 'warning'
}
).then(() => true).catch(() => false);
if (!confirm) return;
forceRestart = true;
} else {
const confirm = await proxy?.$modal.confirm('是否确认启动节点 "' + row.nodeName + '" 的 Xray 服务?');
if (!confirm) return;
}
try {
loading.value = true;
const res = await startXray(row.id);
const res = await startXray(row.id, forceRestart);
const data = res.data.response;
if (data.isStarted) {
@ -681,7 +698,7 @@ const handleStartXray = async (row: NodeVO) => {
}
ElNotification({
title: 'Xray 启动成功',
title: forceRestart ? 'Xray 重启成功' : 'Xray 启动成功',
dangerouslyUseHTMLString: true,
message: `
<div>