vue实现nginx可视化ui操作设置多网站站点代码

代码语言:html

所属分类:布局界面

代码描述:vue实现nginx可视化ui操作设置多网站站点代码

代码标签: vue nginx 可视化 ui 操作 设置 多网站 站点 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Nginx Manager (Mock API)</title>
    <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/element-plus.index.2.10.3.css">
    <style>
        body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; margin: 0; background-color: #f4f5f7; }
        #app { display: flex; height: 100vh; }
        .sidebar { width: 300px; background-color: #ffffff; border-right: 1px solid #e6e6e6; padding: 20px; overflow-y: auto; flex-shrink: 0; }
        .main-content { flex-grow: 1; padding: 20px; overflow-y: auto; }
        .site-item { display: flex; justify-content: space-between; align-items: center; padding: 12px; border-radius: 6px; cursor: pointer; margin-bottom: 10px; transition: background-color 0.2s; }
        .site-item:hover { background-color: #ecf5ff; }
        .site-item.active { background-color: #d9ecff; font-weight: bold; }
        .status-dot { height: 10px; width: 10px; border-radius: 50%; display: inline-block; margin-right: 8px; }
        .status-enabled { background-color: #67c23a; }
        .status-disabled { background-color: #909399; }
        .header { margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; }
        .form-section { margin-bottom: 25px; padding-bottom: 15px; border-bottom: 1px solid #ebeef5; }
        .form-section-title { font-size: 16px; font-weight: 600; margin-bottom: 15px; color: #303133; }
        .el-alert { margin-bottom: 20px; }
    </style>
</head>
<body>
    <div id="app" v-loading.fullscreen.lock="fullscreenLoading">
        <div class="sidebar">
            <div class="header">
                <h2>站点列表</h2>
                <el-button type="primary" :icon="Plus" @click="handleNewSite" size="small">新建</el-button>
            </div>
            <div v-for="site in sites" :key="site.filename" 
                 class="site-item" 
                 :class="{ active: currentSite && currentSite.filename === site.filename }"
                 @click="selectSite(site.filename)">
                <div>
                    <span class="status-dot" :class="site.status === 'enabled' ? 'status-enabled' : 'status-disabled'"></span>
                    <span>{{ site.filename }}</span>
                </div>
            </div>
        </div>

        <div class="main-content">
            <div v-if="!currentSite" class="el-empty" description="请从左侧选择一个站点或新建一个站点">
                 <el-empty description="请从左侧选择一个站点,或新建一个站点" :image-size="200"></el-empty>
            </div>
            
            <div v-if="currentSite">
                <div class="header">
                    <h1>{{ currentSite.filename }}</h1>
                    <div>
                        <el-button :type="siteStatus === 'enabled' ? 'warning' : 'success'" @click="toggleSiteStatus">
                            {{ siteStatus === 'enabled' ? '禁用' : '启用' }}
                        </el-button>
                        <el-button type="primary" @click="reloadNginx">重载Nginx</el-button>
                        <el-button type="danger" :icon="Delete" @click="deleteSite"></el-button>
                    </div>
                </div>

                <el-alert v-if="configChanged" title="配置已修改,请点击“保存更改”并“重载Nginx”以生效。" type="warning" show-icon :closable="false"></el-alert>
                
                <el-form :model="form" label-width="150px" label-position="right">
                    <div class="form-section">
                        <div class="form-section-title">基础配置</div>
                        <el-form-item label="配置文件名">
                            <el-input v-model="form.filename" disabled></el-input>
                    .........完整代码请登录后点击上方下载按钮下载查看

网友评论0