|
|
@@ -1,14 +1,25 @@
|
|
|
<template>
|
|
|
<div class="awb-page">
|
|
|
<!-- 工作台顶栏:与布局壳共用 AppTopBar;账号操作只留在主窗口,这里不渲染用户菜单 -->
|
|
|
- <AppTopBar
|
|
|
- :case-name="caseName"
|
|
|
- :logo-title="'清鉴 · 智能工作台'"
|
|
|
- :show-user-dropdown="false"
|
|
|
- >
|
|
|
- <!-- 下载管理:AI 会话的工具结果导出(CSV 等下载产物)都经它落到本机,入口与传统壳顶栏一致 -->
|
|
|
+ <AppTopBar :case-name="caseName" :logo-title="'清鉴 · 智能工作台'" :show-user-dropdown="false">
|
|
|
+ <!-- 模板库 / 下载管理 / 设置:与主壳顶栏保持同一套入口 -->
|
|
|
<template #actions>
|
|
|
+ <Tooltip title="模板库" placement="bottom" :mouseEnterDelay="0.5">
|
|
|
+ <Button
|
|
|
+ type="text"
|
|
|
+ class="jeesite-header-action-button"
|
|
|
+ aria-label="模板库"
|
|
|
+ @click="templateLibraryVisible = true"
|
|
|
+ >
|
|
|
+ <Icon icon="i-ant-design:book-outlined" />
|
|
|
+ </Button>
|
|
|
+ </Tooltip>
|
|
|
+
|
|
|
+ <!-- 下载管理:AI 会话的工具结果导出(CSV 等下载产物)都经它落到本机 -->
|
|
|
<AppDownloadManager />
|
|
|
+
|
|
|
+ <!-- 设置:与主壳同一套侧边栏(地图 / 服务地址 / 系统服务 / 授权 / 关于产品) -->
|
|
|
+ <SettingDrawer v-if="getShowSettingButton" />
|
|
|
</template>
|
|
|
</AppTopBar>
|
|
|
|
|
|
@@ -95,6 +106,9 @@
|
|
|
|
|
|
<!-- 产物预览弹窗:全局唯一实例,消息卡片与产物栏共用 -->
|
|
|
<ArtifactPreviewModal />
|
|
|
+
|
|
|
+ <!-- 模板库:挂在顶栏上就地打开,不打断当前会话 -->
|
|
|
+ <CaseTemplateLibraryModal v-model:open="templateLibraryVisible" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -112,8 +126,11 @@
|
|
|
*/
|
|
|
import { computed, nextTick, onMounted, ref, watch } from 'vue';
|
|
|
import { useRoute } from 'vue-router';
|
|
|
+ import { Button, Tooltip } from 'ant-design-vue';
|
|
|
import Icon from '@/core/components/Icon/src/Icon.vue';
|
|
|
import { AppDownloadManager, AppTopBar } from '@/core/components/Application';
|
|
|
+ import { createAsyncComponent } from '@/core/utils/factory/createAsyncComponent';
|
|
|
+ import { useRootSetting } from '@/core/hooks/setting/useRootSetting';
|
|
|
import { getLastWorkbenchView, setLastWorkbenchView } from '@/core/logics/workbenchMode';
|
|
|
import SessionList from '../../components/SessionList.vue';
|
|
|
import ChatPanel from '../../components/ChatPanel.vue';
|
|
|
@@ -130,6 +147,17 @@
|
|
|
type WorkbenchView = 'chat' | 'model' | 'agent' | 'knowledge' | 'plugin';
|
|
|
const WORKBENCH_VIEWS: WorkbenchView[] = ['chat', 'model', 'agent', 'knowledge', 'plugin'];
|
|
|
|
|
|
+ /** 设置侧边栏与模板库按需加载:与主壳一致,避免工作台首屏把所有设置弹窗一起打包 */
|
|
|
+ const SettingDrawer = createAsyncComponent(() => import('@/core/layouts/default/setting/index.vue'), {
|
|
|
+ loading: true,
|
|
|
+ });
|
|
|
+ const CaseTemplateLibraryModal = createAsyncComponent(
|
|
|
+ () => import('@/case/views/data/components/CaseTemplateLibraryModal.vue'),
|
|
|
+ );
|
|
|
+
|
|
|
+ const { getShowSettingButton } = useRootSetting();
|
|
|
+ const templateLibraryVisible = ref(false);
|
|
|
+
|
|
|
/**
|
|
|
* 视图恢复,两个来源,前者优先:
|
|
|
* 1. ?view=xxx —— 从上传流程等外部全屏页返回工作台时带回来的视图;
|
|
|
@@ -463,26 +491,35 @@
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * 下载管理入口的图标按钮观感:传统壳那套 `.jeesite-layout-header-action > div`
|
|
|
- * 规则只存在于传统布局样式表(layouts/default/header/index.less),工作台路由下
|
|
|
- * 不加载,这里自带一份(取值与 `jeesite-header-action-button` 一致:顶栏缩排后 30×28),
|
|
|
- * 只作用于本页,不影响传统壳原有外观。图标尺寸(20px)由组件自身样式统一,
|
|
|
- * 两个模式不再各写一份。
|
|
|
+ * 顶栏图标按钮(模板库 / 下载管理 / 设置):传统壳那套
|
|
|
+ * `.jeesite-layout-header-action > div` 规则只存在于传统布局样式表
|
|
|
+ * (layouts/default/header/index.less),工作台路由下不加载,这里自带一份
|
|
|
+ * (取值与传统壳一致:顶栏缩排后 30×28、圆角 8),只作用于本页。
|
|
|
*/
|
|
|
- .awb-page .jeesite-app-download-manager-trigger {
|
|
|
+ .awb-page .jeesite-header-action-button {
|
|
|
display: inline-flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
width: 30px;
|
|
|
+ min-width: 30px;
|
|
|
height: 28px;
|
|
|
- padding: 0 2px;
|
|
|
+ padding: 0;
|
|
|
color: inherit;
|
|
|
background: transparent;
|
|
|
+ border-color: transparent;
|
|
|
border-radius: 8px;
|
|
|
+ box-shadow: none;
|
|
|
cursor: pointer;
|
|
|
transition: background-color 0.2s ease;
|
|
|
|
|
|
- &:hover {
|
|
|
+ .jeesite-icon,
|
|
|
+ .anticon {
|
|
|
+ font-size: 18px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:hover,
|
|
|
+ &:focus,
|
|
|
+ &:focus-visible {
|
|
|
background-color: @header-light-bg-hover-color;
|
|
|
}
|
|
|
}
|