2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-05 02:07:18 +08:00
Files
panel/web/src/views/firewall/CreateForwardModal.vue
2025-02-09 02:02:55 +08:00

92 lines
2.1 KiB
Vue

<script setup lang="ts">
import firewall from '@/api/panel/firewall'
import { NButton } from 'naive-ui'
const show = defineModel<boolean>('show', { type: Boolean, required: true })
const loading = ref(false)
const protocols = [
{
label: 'TCP',
value: 'tcp'
},
{
label: 'UDP',
value: 'udp'
},
{
label: 'TCP/UDP',
value: 'tcp/udp'
}
]
const createModel = ref({
protocol: 'tcp',
port: 8080,
target_ip: '127.0.0.1',
target_port: 80
})
const handleCreate = () => {
useRequest(firewall.createForward(createModel.value)).onSuccess(() => {
show.value = false
createModel.value = {
protocol: 'tcp',
port: 8080,
target_ip: '127.0.0.1',
target_port: 80
}
window.$message.success(`创建成功`)
})
}
</script>
<template>
<n-modal
v-model:show="show"
preset="card"
title="创建转发"
style="width: 60vw"
size="huge"
:bordered="false"
:segmented="false"
@close="show = false"
>
<n-form :model="createModel">
<n-form-item path="protocols" label="传输协议">
<n-select v-model:value="createModel.protocol" :options="protocols" />
</n-form-item>
<n-form-item path="address" label="目标 IP">
<n-input v-model:value="createModel.target_ip" placeholder="127.0.0.1" />
</n-form-item>
<n-row :gutter="[0, 24]">
<n-col :span="12">
<n-form-item path="address" label="源端口">
<n-input-number
v-model:value="createModel.port"
:min="1"
:max="65535"
placeholder="8080"
/>
</n-form-item>
</n-col>
<n-col :span="12">
<n-form-item path="address" label="目标端口">
<n-input-number
v-model:value="createModel.target_port"
:min="1"
:max="65535"
placeholder="80"
/>
</n-form-item>
</n-col>
</n-row>
</n-form>
<n-button type="info" block :loading="loading" :disabled="loading" @click="handleCreate">
提交
</n-button>
</n-modal>
</template>
<style scoped lang="scss"></style>