ваше сообщение коммита
This commit is contained in:
@@ -373,29 +373,19 @@ strong {
|
||||
.crm-web3-block {
|
||||
margin: 32px 0 24px 0;
|
||||
padding: 24px;
|
||||
background: #f5f5f5;
|
||||
background: #f8fafc;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
opacity: 0.7;
|
||||
border: 2px solid #dee2e6;
|
||||
}
|
||||
.crm-web3-block h2 {
|
||||
margin: 0;
|
||||
font-size: 1.4rem;
|
||||
font-weight: 600;
|
||||
color: var(--color-dark);
|
||||
}
|
||||
.crm-web3-block .details-btn {
|
||||
margin-top: 0;
|
||||
background: #6c757d;
|
||||
opacity: 0.6;
|
||||
}
|
||||
.crm-web3-block .details-btn:hover {
|
||||
background: #5a6268;
|
||||
transform: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
</style>
|
||||
@@ -20,13 +20,23 @@
|
||||
>
|
||||
<div class="vds-mock-container">
|
||||
<div class="mock-header">
|
||||
<h1>VDS Сервер - Не настроен</h1>
|
||||
<h1 v-if="vdsConfigured">VDS Сервер - Настроен</h1>
|
||||
<h1 v-else>VDS Сервер - Не настроен</h1>
|
||||
<div class="mock-status">
|
||||
<div class="status-indicator offline"></div>
|
||||
<span>Офлайн</span>
|
||||
<div class="status-indicator" :class="vdsConfigured ? 'online' : 'offline'"></div>
|
||||
<span v-if="vdsConfigured">Онлайн</span>
|
||||
<span v-else>Офлайн</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Информация о домене -->
|
||||
<div v-if="vdsConfigured && vdsDomain" class="domain-info">
|
||||
<h3>🌐 Ваше приложение доступно по адресу:</h3>
|
||||
<a :href="`https://${vdsDomain}`" target="_blank" class="domain-link">
|
||||
https://{{ vdsDomain }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Мок интерфейс -->
|
||||
<div class="mock-content">
|
||||
<div class="mock-card">
|
||||
@@ -117,7 +127,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { defineProps, defineEmits } from 'vue';
|
||||
import { defineProps, defineEmits, ref, onMounted } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import BaseLayout from '../components/BaseLayout.vue';
|
||||
|
||||
@@ -134,9 +144,32 @@ const emit = defineEmits(['auth-action-completed']);
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
// Состояние VDS
|
||||
const vdsConfigured = ref(false);
|
||||
const vdsDomain = ref(null);
|
||||
|
||||
// Проверка статуса VDS
|
||||
const checkVdsStatus = () => {
|
||||
try {
|
||||
const vdsConfig = localStorage.getItem('vds-config');
|
||||
if (vdsConfig) {
|
||||
const config = JSON.parse(vdsConfig);
|
||||
vdsConfigured.value = config.isConfigured || false;
|
||||
vdsDomain.value = config.domain || null;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка при проверке статуса VDS:', error);
|
||||
}
|
||||
};
|
||||
|
||||
const goToSetup = () => {
|
||||
router.push({ name: 'webssh-settings' });
|
||||
};
|
||||
|
||||
// Жизненный цикл
|
||||
onMounted(() => {
|
||||
checkVdsStatus();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -188,6 +221,43 @@ const goToSetup = () => {
|
||||
background: #dc3545;
|
||||
}
|
||||
|
||||
.status-indicator.online {
|
||||
background: #28a745;
|
||||
}
|
||||
|
||||
.domain-info {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
margin: 20px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.domain-info h3 {
|
||||
margin: 0 0 15px 0;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.domain-link {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
padding: 12px 24px;
|
||||
border-radius: 8px;
|
||||
display: inline-block;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.domain-link:hover {
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.mock-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -61,8 +61,11 @@ sudo bash webssh-agent/install.sh</code></pre>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, onUnmounted } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useWebSshService } from '../../services/webSshService';
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const webSshService = useWebSshService();
|
||||
const agentAvailable = ref(false);
|
||||
|
||||
@@ -138,14 +141,20 @@ const handleSubmit = async () => {
|
||||
addLog('info', 'Запуск публикации...');
|
||||
try {
|
||||
// Публикация через агента
|
||||
const result = await webSshService.createTunnel(form);
|
||||
const result = await webSshService.setupVDS(form);
|
||||
if (result.success) {
|
||||
isConnected.value = true;
|
||||
connectionStatus.value = `Подключено к ${form.domain}`;
|
||||
addLog('success', 'SSH туннель успешно создан и настроен');
|
||||
addLog('info', `Ваше приложение доступно по адресу: https://${form.domain}`);
|
||||
addLog('success', 'VDS успешно настроена');
|
||||
addLog('info', `Ваше приложение будет доступно по адресу: https://${form.domain}`);
|
||||
|
||||
// Перенаправляем на страницу VDS Mock через 3 секунды
|
||||
addLog('info', 'Перенаправление на страницу управления VDS через 3 секунды...');
|
||||
setTimeout(() => {
|
||||
router.push({ name: 'vds-mock' });
|
||||
}, 3000);
|
||||
} else {
|
||||
addLog('error', result.message || 'Ошибка при создании туннеля');
|
||||
addLog('error', result.message || 'Ошибка при настройке VDS');
|
||||
}
|
||||
} catch (error) {
|
||||
addLog('error', `Ошибка: ${error.message}`);
|
||||
|
||||
Reference in New Issue
Block a user