done with the connecting of coze
This commit is contained in:
@@ -128,7 +128,7 @@
|
||||
.dashboard-page {
|
||||
background: var(--bg-color);
|
||||
}
|
||||
|
||||
|
||||
.navbar {
|
||||
background: white;
|
||||
padding: 16px 40px;
|
||||
@@ -1269,6 +1269,7 @@
|
||||
<div class="nav-menu">
|
||||
<div class="nav-item active" onclick="showPage('dashboardPage')">首页</div>
|
||||
<div class="nav-item" onclick="showPage('aiPage')">AI智能体</div>
|
||||
<div class="nav-item" onclick="openCozeWorkspace()">Coze工作台</div>
|
||||
<div class="nav-item">学习中心</div>
|
||||
<div class="nav-item">校友社群</div>
|
||||
</div>
|
||||
@@ -1492,7 +1493,7 @@
|
||||
<p class="description">智能体矩阵赋能创业全流程,让每位OPC都拥有专属的AI助手团队</p>
|
||||
|
||||
<div class="ai-grid" style="margin-top: 24px;">
|
||||
<div class="ai-card" onclick="window.open('http://nw.sgcode.cn:18888/sign', '_blank')">
|
||||
<div class="ai-card" onclick="openCozeWorkspace()">
|
||||
<div class="ai-card-header">
|
||||
<div class="ai-card-avatar" style="background: #E0E7FF;">🤖</div>
|
||||
<div class="ai-card-info">
|
||||
@@ -1893,6 +1894,7 @@
|
||||
<div class="nav-menu">
|
||||
<div class="nav-item" onclick="showPage('dashboardPage')">首页</div>
|
||||
<div class="nav-item active" onclick="showPage('aiPage')">AI智能体</div>
|
||||
<div class="nav-item" onclick="openCozeWorkspace()">Coze工作台</div>
|
||||
<div class="nav-item">学习中心</div>
|
||||
<div class="nav-item">校友社群</div>
|
||||
</div>
|
||||
@@ -2115,6 +2117,31 @@
|
||||
currentUser = savedUser;
|
||||
updateUserDisplay(savedUser);
|
||||
});
|
||||
|
||||
const AUTH_API_BASE = 'http://localhost:3010/api';
|
||||
|
||||
// 打开 Coze 工作台:调用自己后台 /coze/space-url,拿到 /space/<id>/develop
|
||||
async function openCozeWorkspace() {
|
||||
const email = String(currentUser || '').trim();
|
||||
if (!email) {
|
||||
alert('请先登录');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${AUTH_API_BASE}/coze/space-url?user=${encodeURIComponent(email)}`);
|
||||
const result = await response.json().catch(() => ({}));
|
||||
|
||||
if (!response.ok || !result || !result.url) {
|
||||
throw new Error(result?.message || '未找到对应空间');
|
||||
}
|
||||
|
||||
// 这里打开的是 /space/<id>/develop,Coze 自己会根据是否有 session 决定是否先让用户登录
|
||||
window.open(result.url, '_blank');
|
||||
} catch (error) {
|
||||
alert(error.message || '打开 Coze 工作台失败');
|
||||
}
|
||||
}
|
||||
|
||||
// 页面切换
|
||||
function showPage(pageId) {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<div class="nav-menu">
|
||||
<router-link to="/" class="nav-item" :class="{ active: $route.path === '/' }">首页</router-link>
|
||||
<router-link to="/ai" class="nav-item" :class="{ active: $route.path === '/ai' }">AI智能体</router-link>
|
||||
<button class="nav-item nav-link-btn" type="button" @click="openCozeWorkspace">Coze工作台</button>
|
||||
<div class="nav-item">学习中心</div>
|
||||
<div class="nav-item">校友社群</div>
|
||||
</div>
|
||||
@@ -167,6 +168,7 @@ import { useUserStore } from '@/stores/user'
|
||||
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
const AUTH_API_BASE = 'http://localhost:3010/api'
|
||||
|
||||
// 用户菜单
|
||||
const isUserMenuOpen = ref(false)
|
||||
@@ -200,6 +202,27 @@ const goToMembership = () => {
|
||||
router.push('/?tab=membership')
|
||||
}
|
||||
|
||||
const openCozeWorkspace = async () => {
|
||||
const email = String(userStore.currentUser || '').trim()
|
||||
if (!email) {
|
||||
alert('请先登录')
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${AUTH_API_BASE}/coze/space-url?user=${encodeURIComponent(email)}`)
|
||||
const result = await response.json()
|
||||
|
||||
if (!response.ok || !result?.url) {
|
||||
throw new Error(result?.message || '未找到对应空间')
|
||||
}
|
||||
|
||||
window.open(result.url, '_blank')
|
||||
} catch (error) {
|
||||
alert((error as Error).message || '打开Coze工作台失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 搜索和筛选
|
||||
const searchQuery = ref('')
|
||||
const currentFilter = ref('全部')
|
||||
@@ -494,6 +517,12 @@ const scrollToBottom = () => {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nav-link-btn {
|
||||
border: none;
|
||||
background: transparent;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.nav-item:hover {
|
||||
background: #f8fafc;
|
||||
color: #1e293b;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<div class="nav-menu">
|
||||
<router-link to="/" class="nav-item" :class="{ active: $route.path === '/' }">首页</router-link>
|
||||
<router-link to="/ai" class="nav-item" :class="{ active: $route.path === '/ai' }">AI智能体</router-link>
|
||||
<button class="nav-item nav-link-btn" type="button" @click="openCozeWorkspace">Coze工作台</button>
|
||||
<div class="nav-item">学习中心</div>
|
||||
<div class="nav-item">校友社群</div>
|
||||
</div>
|
||||
@@ -283,6 +284,7 @@ import { useUserStore } from '@/stores/user'
|
||||
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
const AUTH_API_BASE = 'http://localhost:3010/api'
|
||||
|
||||
// Tab 相关
|
||||
const currentTab = ref('overview')
|
||||
@@ -328,6 +330,28 @@ const goToMembership = () => {
|
||||
isUserMenuOpen.value = false
|
||||
}
|
||||
|
||||
const openCozeWorkspace = async () => {
|
||||
const email = String(userStore.currentUser || '').trim()
|
||||
if (!email) {
|
||||
alert('请先登录')
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${AUTH_API_BASE}/coze/space-url?user=${encodeURIComponent(email)}`)
|
||||
const result = await response.json()
|
||||
|
||||
if (!response.ok || !result?.url) {
|
||||
throw new Error(result?.message || '未找到对应空间')
|
||||
}
|
||||
|
||||
// 后端返回 /space/<id>/develop,Coze 会根据是否已登录决定是否先让用户登录
|
||||
window.open(result.url, '_blank')
|
||||
} catch (error) {
|
||||
alert((error as Error).message || '打开Coze工作台失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 课程数据
|
||||
const courses = [
|
||||
{ name: '商业模式设计', icon: '📊', desc: '掌握商业画布、价值主张设计,构建可持续的商业模式', hours: 32, students: '1.2k', bg: '#EDE9FE' },
|
||||
@@ -521,6 +545,12 @@ const scrollToBottom = () => {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nav-link-btn {
|
||||
border: none;
|
||||
background: transparent;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.nav-item:hover {
|
||||
background: #f8fafc;
|
||||
color: #1e293b;
|
||||
|
||||
Reference in New Issue
Block a user