done with the connecting of coze

This commit is contained in:
Ebenezer
2026-03-30 18:30:09 +08:00
parent 8c0e327115
commit adde023647
619 changed files with 8987 additions and 46206 deletions

View File

@@ -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>/developCoze 自己会根据是否有 session 决定是否先让用户登录
window.open(result.url, '_blank');
} catch (error) {
alert(error.message || '打开 Coze 工作台失败');
}
}
// 页面切换
function showPage(pageId) {

View File

@@ -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;

View File

@@ -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>/developCoze 会根据是否已登录决定是否先让用户登录
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;