点击查看html编辑器说明文档

酒店场景预算模板edit icon

|
|
Fork(复制)
|
|

👉 新版编辑器已上线,点击进行体验吧!

BUG反馈
嵌入
设置
下载
HTML
格式化
支持Emmet,输入 p 后按 Tab键试试吧!
<head> ...
展开
</head>
<body>
            
            <!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>酒店场景预算模板</title>
    <style>
        /* 基础样式 */
        body {
            font-family: Arial, sans-serif;
            background-color: #ffe6e6; /* 浅红色背景 */
            color: #333;
            margin: 0;
            padding: 20px;
        }
        h1 {
            text-align: center;
            color: #cc0000; /* 深红色标题 */
            margin-bottom: 30px;
            font-size: 2.5em;
        }
        form {
            background: white;
            padding: 25px;
            border-radius: 12px;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
            max-width: 700px;
            margin: 0 auto;
        }
        label {
            display: block;
            margin-bottom: 10px;
            font-weight: bold;
            color: #555;
        }
        input[type="number"] {
            width: calc(100% - 20px); /* 减去内边距和边框的宽度 */
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 6px;
            font-size: 14px;
            margin-bottom: 15px;
            box-sizing: border-box; /* 确保内边距和边框包含在宽度内 */
        }
        input[type="checkbox"], input[type="radio"] {
            margin-right: 10px;
        }
        .option-group {
            margin-bottom: 20px;
            padding: 15px;
            border-left: 4px solid #cc0000; /* 深红色边框 */
            background-color: #fff0f0; /* 浅红色背景 */
            border-radius: 6px;
            position: relative;
            max-width: 100%; /* 确保父容器不会超出红色背景 */
        }
        .sub-option-group {
            margin-left: 50px; /* 增加左边距 */
            margin-top: 15px;
            padding: 15px;
            border-left: 3px solid #ff6666; /* 浅红色边框 */
            background: linear-gradient(145deg, #ffffff, #ffe6e6); /* 浅红色渐变背景 */
            border-radius: 8px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            transition: all 0.3s ease;
            opacity: 0;
            height: 0;
            overflow: hidden;
        }
        .sub-option-group.visible {
            opacity: 1;
            height: auto;
            padding: 15px;
            margin-top: 15px;
        }
        .sub-option-group label {
            display: flex;
            align-items: center;
            margin-bottom: 15px; /* 增加行距 */
        }
        .sub-option-group .option-container {
            display: flex;
            gap: 20px; /* 选项之间的间距 */
            flex-wrap: wrap; /* 如果选项过多,自动换行 */
        }
        .hidden {
            display: none;
        }
        .result {
            margin-top: 30px;
            padding: 25px;
            background: white;
            border-radius: 12px;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
            max-width: 700px;
            margin: 20px auto;
        }
        .result h2 {
            color: #cc0000; /* 深红色标题 */
            margin-bottom: 15px;
            font-size: 20px;
        }
        .result p {
            margin: 10px 0;
            font-size: 16px;
            color: #555;
        }
        button {
            display: block;
            width: 100%;
            padding: 12px;
            background-color: #cc0000; /* 深红色按钮 */
            color: white;
            border: none;
            border-radius: 6px;
            font-size: 16px;
            cursor: pointer;
            margin-top: 20px;
            transition: background-color 0.3s ease;
        }
        button:hover {
            background-color: #990000; /* 深红色按钮悬停效果 */
        }

        /* 响应式设计 */
        @media (max-width: 768px) {
            h1 {
                font-size: 2em; /* 标题字体缩小 */
            }
            form {
                padding: 15px; /* 表单内边距缩小 */
            }
            .option-group {
                padding: 10px; /* 选项组内边距缩小 */
            }
            .sub-option-group {
                margin-left: 30px; /* 子选项组左边距缩小 */
            }
            .result {
                padding: 15px; /* 结果框内边距缩小 */
            }
            button {
                font-size: 14px; /* 按钮字体缩小 */
            }
        }

        @media (max-width: 480px) {
            h1 {
                font-size: 1.5em; /* 标题字体进一步缩小 */
            }
            input[type="number"] {
                font-size: 12px; /* 输入框字体缩小 */
            }
            .option-group {
                border-left-width: 3px; /* 边框宽度缩小 */
            }
            .sub-option-group {
                border-left-width: 2px; /* 子选项组边框宽度缩小 */
            }
            .result h2 {
                font-size: 18px; /* 结果标题字体缩小 */
            }
            .result p {
                font-size: 14px; /* 结果内容字体缩小 */
            }
        }
    </style>
</head>
<body>
    <h1>酒店场景预算模板</h1>
    <form id="calcForm">
        <!-- 输入框 -->
        <div class="option-group">
            <label for="roomCount">房间数:</label>
            <input type="number" id="roomCount" name="roomCount" required>
        </div>
        <div class="option-group">
            <label for="floorCount">层数:</label>
            <input type="number" id="floorCount" name="floorCount" required>
        </div>
        <div class="option-group">
            <label for="publicArea">公区面积:</label>
            <input type="number" id="publicArea" name="publicArea" required>
        </div>

        <!-- 判断框 -->
        <div class="option-group">
            <label>是否选择专线?</label>
            <input type="radio" name="dedicatedLine" value="yes" onchange="toggleDedicatedLineOptions()"> 是
            <input type="radio" name="dedicatedLine" value="no" onchange="toggleDedicatedLineOptions()"> 否
            <div id="dedicatedLineOptions" class="sub-option-group">
                <div>
                    <label>专线使用范围?</label>
                    <div class="option-container">
                        <label><input type="checkbox" name="dedicatedLineScope" value="frontDesk"> 前台</label>
                        <label><input type="checkbox" name="dedicatedLineScope" value="guestRoom"> 客房</label>
                    </div>
                </div>
                <div>
                    <label>专线是否趸交?</label>
                    <div class="option-container">
                        <label><input type="radio" name="dedicatedLineLumpSum" value="yes"> 是</label>
                        <label><input type="radio" name="dedicatedLineLumpSum" value="no"> 否</label>
                    </div>
                </div>
            </div>
        </div>

        <div class="option-group">
            <label>是否使用企业宽带?</label>
            <input type="radio" name="enterpriseBroadband" value="yes" onchange="toggleEnterpriseBroadbandOptions()"> 是
            <input type="radio" name="enterpriseBroadband" value="no" onchange="toggleEnterpriseBroadbandOptions()"> 否
            <div id="enterpriseBroadbandOptions" class="sub-option-group">
                <div>
                    <label>企业宽带是否趸交?</label>
                    <div class="option-container">
                        <label><input type="radio" name="enterpriseBroadbandLumpSum" value="yes"> 是</label>
                        <label><input type="radio" name="enterpriseBroadbandLumpSum" value="no"> 否</label>
                    </div>
                </div>
            </div>
        </div>

        <div class="option-group">
            <label>是否融端?</label>
            <input type="radio" name="integration" value="yes"> 是
            <input type="radio" name="integration" value="no"> 否
        </div>

        <button type="button" onclick="calculate()">计算</button>
    </form>

    <!-- 生成框 -->
    <div class="result">
        <h2>FTTO主从数量</h2>
        <div id="deviceCountResult"></div>
    </div>

    <div class="result">
        <h2>专线情况</h2>
        <div id="dedicatedLineResult"></div>
    </div>

    <div class="result">
        <h2>企业宽带情况</h2>
        <div id="enterpriseBroadbandResult"></div>
    </div>

    <script>
        // 显示/隐藏专线选项
        function toggleDedicatedLineOptions() {
            const dedicatedLineOptions = document.getElementById('dedicatedLineOptions');
            const dedicatedLineYes = document.querySelector('input[name="dedicatedLine"][value="yes"]');
            if (dedicatedLineYes.checked) {
                dedicatedLineOptions.classList.add('visible');
            } else {
                dedicatedLineOptions.classList.remove('visible');
            }
        }

        // 显示/隐藏企业宽带选项
        function toggleEnterpriseBroadbandOptions() {
            const enterpriseBroadbandOptions = document.getElementById('enterpriseBroadbandOptions');
            const enterpriseBroadbandYes = document.querySelector('input[name="enterpriseBroadband"][value="yes"]');
            if (enterpriseBroadbandYes.checked) {
                enterpriseBroadbandOptions.classList.add('visible');
            } else {
                enterpriseBroadbandOptions.classList.remove('visible');
            }
        }

        // 计算函数
        function calculate() {
            const roomCount = parseInt(document.getElementById('roomCount').value);
            const floorCount = parseInt(document.getElementById('floorCount').value);
            const publicArea = parseInt(document.getElementById('publicArea').value);

            const dedicatedLineYes = document.querySelector('input[name="dedicatedLine"][value="yes"]').checked;
            const dedicatedLineScopeFrontDesk = document.querySelector('input[name="dedicatedLineScope"][value="frontDesk"]').checked;
            const dedicatedLineScopeGuestRoom = document.querySelector('input[name="dedicatedLineScope"][value="guestRoom"]').checked;
            const dedicatedLineLumpSumYes = document.querySelector('input[name="dedicatedLineLumpSum"][value="yes"]').checked;

            const enterpriseBroadbandYes = document.querySelector('input[name="enterpriseBroadband"][value="yes"]').checked;
            const enterpriseBroadbandLumpSumYes = document.querySelector('input[name="enterpriseBroadbandLumpSum"][value="yes"]').checked;

            const integrationYes = document.querySelector('input[name="integration"][value="yes"]').checked;

            // 生成框1: FTTO主从数量
            let slaveDeviceCount = 0;
            let masterDeviceCount = 0;
            if (integrationYes) {
                slaveDeviceCount = Math.floor(roomCount / 2);
                masterDeviceCount = Math.max(floorCount, Math.ceil(slaveDeviceCount / 8));
            }
            document.getElementById('deviceCountResult').innerHTML = `
                <p>从设备数量: ${slaveDeviceCount || '无'}</p>
                <p>主设备数量: ${masterDeviceCount || '无'}</p>
            `;

            // 生成框2: 专线情况
            let dedicatedLineCount = 0;
            let dedicatedLineBandwidth = '';
            let dedicatedLineFee = '';
            let dedicatedLineTotalFee = 0;

            if (dedicatedLineYes) {
                if (dedicatedLineScopeFrontDesk && dedicatedLineScopeGuestRoom) {
                    dedicatedLineCount = 2;
                    dedicatedLineBandwidth = `前台50M, 客房${Math.max(50, Math.ceil(roomCount * 0.8 / 50) * 50)}M`;
                } else if (dedicatedLineScopeFrontDesk) {
                    dedicatedLineCount = 1;
                    dedicatedLineBandwidth = '前台50M';
                } else if (dedicatedLineScopeGuestRoom) {
                    dedicatedLineCount = 1;
                    dedicatedLineBandwidth = `客房${Math.max(50, Math.ceil(roomCount * 0.8 / 50) * 50)}M`;
                }

                let frontDeskFee = 0;
                let guestRoomFee = 0;
                if (dedicatedLineLumpSumYes && integrationYes) {
                    frontDeskFee = 1000;
                    guestRoomFee = Math.ceil(roomCount * 0.8 / 50) * 50 * 18;
                } else if (dedicatedLineLumpSumYes && !integrationYes) {
                    frontDeskFee = 1100;
                    guestRoomFee = Math.ceil(roomCount * 0.8 / 50) * 50 * 19;
                } else if (!dedicatedLineLumpSumYes) {
                    frontDeskFee = 1500;
                    guestRoomFee = Math.ceil(roomCount * 0.8 / 50) * 50 * 25;
                }

                if (dedicatedLineScopeFrontDesk && dedicatedLineScopeGuestRoom) {
                    dedicatedLineFee = `前台${frontDeskFee}元/月, 客房${guestRoomFee}元/月`;
                    dedicatedLineTotalFee = frontDeskFee + guestRoomFee;
                } else if (dedicatedLineScopeFrontDesk) {
                    dedicatedLineFee = `前台${frontDeskFee}元/月`;
                    dedicatedLineTotalFee = frontDeskFee;
                } else if (dedicatedLineScopeGuestRoom) {
                    dedicatedLineFee = `客房${guestRoomFee}元/月`;
                    dedicatedLineTotalFee = guestRoomFee;
                }
            }

            document.getElementById('dedicatedLineResult').innerHTML = `
                <p>专线条数: ${dedicatedLineCount || '无'}</p>
                <p>专线带宽: ${dedicatedLineBandwidth || '无'}</p>
                <p>专线资费: ${dedicatedLineFee || '无'}</p>
                <p>专线总资费: ${dedicatedLineTotalFee || '无'}元/月</p>
            `;

            // 生成框3: 企业宽带情况
            let enterpriseBroadbandCount = 0;
            let enterpriseBroadbandFee = 0;

            if (enterpriseBroadbandYes) {
                if (integrationYes) {
                    enterpriseBroadbandCount = Math.max(masterDeviceCount, Math.ceil(roomCount / floorCount / 8));
                } else {
                    enterpriseBroadbandCount = Math.max(floorCount, Math.ceil(roomCount / 15));
                }

                if (enterpriseBroadbandLumpSumYes) {
                    enterpriseBroadbandFee = enterpriseBroadbandCount * 199 * 0.7;
                } else {
                    enterpriseBroadbandFee = enterpriseBroadbandCount * 199;
                }
            }

            document.getElementById('enterpriseBroadbandResult').innerHTML = `
                <p>企业宽带条数: ${enterpriseBroadbandCount || '无'}</p>
                <p>企业宽带资费: ${enterpriseBroadbandFee || '无'}元/月</p>
            `;
        }
    </script>
</body>
</html>
        
</body>
CSS
格式化
            
            
        
JS
格式化
            
            
        
预览
控制台