Slider.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. <template>
  2. <main>
  3. <header @click="handleClick(-1)">
  4. <img src="@/assets/slider/logo.jpg" />
  5. </header>
  6. <section>
  7. <div v-for="(item, key) in slider" :key="key" @click="handleClick(item.id, item.title)"
  8. :class="{ active: item.id === navId }">
  9. <div>
  10. <img :src="getAssetURL(`/src/assets/slider/${item.icon}.svg`)" width="24" class="img-normal" />
  11. <img :src="getAssetURL(`/src/assets/slider/${item.icon}-1.svg`)" width="24" class="img-hover" />
  12. <p>{{ item.title }}</p>
  13. </div>
  14. </div>
  15. </section>
  16. <a-popover position="rt">
  17. <footer>
  18. <div style="background-color: rgb(255, 110, 110)">{{ userName?.slice(0, 1) }}</div>
  19. <p>{{ userName }}</p>
  20. </footer>
  21. <template #content>
  22. <div class="user-popover">
  23. <header>
  24. <div style="background-color: rgb(255, 110, 110)">{{ userName?.slice(0, 1) }}</div>
  25. <p>{{ userName }}</p>
  26. </header>
  27. <section>
  28. <div class="item">
  29. <div @click="toRagflow">
  30. <icon-question-circle size="large" />
  31. <p>知识管理系统</p>
  32. </div>
  33. </div>
  34. <!-- <div class="item" @click="() => {
  35. // openHelp = true;
  36. }
  37. ">
  38. <div>
  39. <icon-info-circle size="large" />
  40. <p>版本说明</p>
  41. </div>
  42. </div>
  43. <div class="item">
  44. <div>
  45. <icon-question-circle size="large" />
  46. <p>使用帮助</p>
  47. </div>
  48. </div> -->
  49. </section>
  50. <div class="item" @click="logout">
  51. <div>
  52. <icon-import size="large" />
  53. <p>退出登录</p>
  54. </div>
  55. </div>
  56. </div>
  57. </template>
  58. </a-popover>
  59. <a-modal v-model:visible="openHelp" :footer="false" width="800px">
  60. <template #title>版本说明</template>
  61. <div style="padding: 0 30px; height: 300px">
  62. <div>
  63. <p><strong>版本号:v2.1</strong></p>
  64. <ol>
  65. <li>【首页】只需一个小小的动作,就可以触发AI会议系统,操作更便捷。</li>
  66. <li>【首页】新增实用性极强的版本信息,轻松了解产品能力。</li>
  67. <li>【大模型】阅读理解能力提升,可以通过智能问答、文档智能、文库问答、文档出题体验。</li>
  68. <li>
  69. 【文档出题】对出题的随机性设置,进一步增强题目的多样性和创新性,默认参数为1时题目数量和内容最佳,当希望内容更随机、更多样时,可调大参数值。
  70. </li>
  71. </ol>
  72. <p><strong>版本号: v2.0</strong></p>
  73. <ol>
  74. <li>【界面优化】使用全新配色UI,更美观、更方便。</li>
  75. </ol>
  76. <ul>
  77. <li>让插件和prompt合集显性化,一目了然</li>
  78. <li>新增鼠标悬停解释说明功能,方便新手快速入门</li>
  79. <li>新增prompt搜索框,方便快速检索</li>
  80. </ul>
  81. <ol start="2">
  82. <li>智能问答板块可支持显示\隐藏侧边栏</li>
  83. <li>支持prompt点击填充输入框,更快捷</li>
  84. <li>新增图生文能力,快速识别图片内容并进行对话交互</li>
  85. <li>模型基础能力提升,各模块更快更准更强</li>
  86. <li>新增RPA进度显示,方便查看自动化工作流进程</li>
  87. <li>文库容量全面升级,实现5倍的扩充</li>
  88. <li>新增对接ISC系统,实现文档的分权限管理</li>
  89. </ol>
  90. <p><strong>版本号: v1.6</strong></p>
  91. <ol>
  92. <li>文档创作</li>
  93. </ol>
  94. <ul>
  95. <li>答案生成的准确性提升</li>
  96. </ul>
  97. <ol start="2">
  98. <li>文库问答</li>
  99. </ol>
  100. <ul>
  101. <li>优化多源多答案功能</li>
  102. <li>解决文档溯源过程中部分显示问题</li>
  103. <li>改进检索关键字不准确问题</li>
  104. <li>提升在多文档中生成答案的融合能力</li>
  105. </ul>
  106. <ol start="3">
  107. <li>文档出题</li>
  108. </ol>
  109. <ul>
  110. <li>提升出题的速度及处理效率</li>
  111. </ul>
  112. <p><strong>版本号: v1.5</strong></p>
  113. <ol>
  114. <li>插件优化与新增</li>
  115. </ol>
  116. <ul>
  117. <li>
  118. 文库问答
  119. <ul>
  120. <li>基于知识库的多文档,实现多源多答案功能。</li>
  121. </ul>
  122. </li>
  123. <li>
  124. 文档创作
  125. <ul>
  126. <li>支持各类型公文的创作,包括讲话稿、发言稿,工作总结、方案,述职报告等;</li>
  127. <li>支持对字数的要求生成文档,包括 200 字、500 字左右等;</li>
  128. <li>支持对公文的续写、扩写(对生成公文指定的部分继续完善),最多支持一分钟 3 轮。</li>
  129. </ul>
  130. </li>
  131. <li>
  132. 文档出题
  133. <ul>
  134. <li>支持流式输出;</li>
  135. <li>解决卡顿问题;</li>
  136. <li>对题目数量的识别、不同类型题的判断优化。</li>
  137. </ul>
  138. </li>
  139. </ul>
  140. <ol start="2">
  141. <li>后端管理平台</li>
  142. </ol>
  143. <ul>
  144. <li>支持对知识库中的文档,设置为个人文档/组织文档。</li>
  145. </ul>
  146. <p><strong>版本号: v1.4</strong></p>
  147. <ol>
  148. <li>首页</li>
  149. </ol>
  150. <ul>
  151. <li>对接 ISC 系统,基于用户信息实现相关功能</li>
  152. <li>视觉优化</li>
  153. </ul>
  154. <ol start="2">
  155. <li>插件优化与新增</li>
  156. </ol>
  157. <ul>
  158. <li>
  159. 文档智能
  160. <ul>
  161. <li>新增功能——支持多文档上传;</li>
  162. <li>新增功能——支持文件上传列表中,选择任意文档问答</li>
  163. <li>性能优化</li>
  164. </ul>
  165. </li>
  166. <li>
  167. 文档出题
  168. <ul>
  169. <li>新增插件</li>
  170. <li>基于上传的文档实现出题,支持出判断题、单项选择题、多项选择题、问答题</li>
  171. </ul>
  172. </li>
  173. <li>
  174. 文库问答
  175. <ul>
  176. <li>录入技术发展部、党建部、人资部等组织材料,实现相关的知识问答。</li>
  177. <li>性能优化</li>
  178. </ul>
  179. </li>
  180. </ul>
  181. <p><strong>版本号: v1.3</strong></p>
  182. <ol>
  183. <li>首页</li>
  184. </ol>
  185. <ul>
  186. <li>增加深色主题。</li>
  187. <li>右上角新增提示推荐、版本说明。</li>
  188. <li>提示推荐: 提示推荐: 新增更多分类,实现多种推荐。</li>
  189. <li>插件: 新增“出小差”,支持问答式生成出差审批表。</li>
  190. </ul>
  191. <p><strong>版本号: v1.2</strong></p>
  192. <ol>
  193. <li>开放域对话</li>
  194. </ol>
  195. <ul>
  196. <li>在不选插件的情况下,回答多领域问题。</li>
  197. </ul>
  198. <ol start="2">
  199. <li>选择插件</li>
  200. </ol>
  201. <ul>
  202. <li>
  203. 文档智能
  204. <ul>
  205. <li>支持单文件上传,实现文件问答。</li>
  206. <li>支持单文件上传,实现局域上传记录的多文档问答。</li>
  207. <li>文档管理,支持上传删除。</li>
  208. </ul>
  209. </li>
  210. </ul>
  211. <ol start="3">
  212. <li>以文生图:</li>
  213. </ol>
  214. <ul>
  215. <li>根据用户的需求描述或输入文本,输出与之相匹配的图片。</li>
  216. </ul>
  217. <ol start="4">
  218. <li>文档创作:</li>
  219. </ol>
  220. <ul>
  221. <li>支持对给定的标题、关键词、大纲或多种组合方式编写公文。</li>
  222. <li>例 1.根据标题生成一篇公文,标题 XX;</li>
  223. <li>例 2.根据标题和大纲生成一篇公文,标题:XX;大纲:XX</li>
  224. </ul>
  225. <ol start="5">
  226. <li>文库问答:</li>
  227. </ol>
  228. <ul>
  229. <li>通过对各部门的知识库构建,实现相关知识的问答。</li>
  230. </ul>
  231. <br />
  232. </div>
  233. </div>
  234. </a-modal>
  235. </main>
  236. </template>
  237. <script>
  238. import { defineComponent, inject, onMounted, ref } from "vue";
  239. export default defineComponent({
  240. props: ["navId"],
  241. setup(props, { emit }) {
  242. const openHelp = ref(false);
  243. const { ajax, helper, config } = inject("$global");
  244. const userName = ref(helper.read("userName") || "");
  245. if (!userName.value) {
  246. helper.goLink("/login");
  247. }
  248. const handleClick = (id, title) => {
  249. emit("select-nav", { id: id, title: title });
  250. };
  251. const logout = () => {
  252. helper.reset();
  253. helper.goLink("/login");
  254. };
  255. const toRagflow = async () => {
  256. const { ragflow_token } = await ajax.user.getToken();
  257. if (ragflow_token) {
  258. // window.open(`http://${window.location.hostname}:9222/authorization?ragflow_token=${ragflow_token}`, "_blank");
  259. window.open(`http://${window.location.hostname}:11080/authorization?ragflow_token=${ragflow_token}`, "_blank");
  260. }
  261. }
  262. return {
  263. slider: config.slider,
  264. getAssetURL: helper.getAssetURL,
  265. userName,
  266. handleClick,
  267. openHelp,
  268. toRagflow,
  269. logout
  270. };
  271. }
  272. });
  273. </script>
  274. <style lang="scss" scoped>
  275. main {
  276. padding: 20px 0;
  277. width: 100px;
  278. border-right: 1px solid rgba(0, 0, 0, 0.1);
  279. display: flex;
  280. flex-direction: column;
  281. >header {
  282. cursor: pointer;
  283. >img {
  284. display: block;
  285. width: 62px;
  286. margin: 0 auto;
  287. }
  288. }
  289. >section {
  290. flex: 1;
  291. margin-top: 27px;
  292. >div {
  293. margin: 0 auto;
  294. width: 70px;
  295. height: 70px;
  296. border-radius: 8px;
  297. cursor: pointer;
  298. display: flex;
  299. align-items: center;
  300. justify-content: center;
  301. .img-normal {
  302. display: block;
  303. }
  304. .img-hover {
  305. display: none;
  306. }
  307. &:hover,
  308. &.active {
  309. background: rgba(0, 0, 0, 0.05);
  310. .img-normal {
  311. display: none;
  312. }
  313. .img-hover {
  314. display: block;
  315. }
  316. }
  317. img {
  318. display: block;
  319. margin: 0 auto;
  320. }
  321. p {
  322. font-size: 13px;
  323. margin-top: 2px;
  324. color: rgb(51, 51, 51);
  325. }
  326. }
  327. }
  328. >footer {
  329. margin: 0 auto 30px;
  330. padding: 0 10px;
  331. width: 80px;
  332. cursor: pointer;
  333. >div {
  334. margin: 0 auto;
  335. width: 40px;
  336. height: 40px;
  337. border-radius: 20px;
  338. display: flex;
  339. align-items: center;
  340. justify-content: center;
  341. color: #fff;
  342. }
  343. >p {
  344. margin-top: 5px;
  345. width: 100%;
  346. text-align: center;
  347. word-wrap: break-word;
  348. white-space: nowrap;
  349. text-overflow: ellipsis;
  350. overflow: hidden;
  351. }
  352. }
  353. }
  354. .user-popover {
  355. >header {
  356. padding-bottom: 10px;
  357. border-bottom: 1px solid #e8e8e8;
  358. >div {
  359. margin: 0 auto;
  360. width: 40px;
  361. height: 40px;
  362. border-radius: 20px;
  363. display: flex;
  364. align-items: center;
  365. justify-content: center;
  366. color: #fff;
  367. }
  368. >p {
  369. margin-top: 5px;
  370. max-width: 150px;
  371. text-align: center;
  372. word-wrap: break-word;
  373. white-space: nowrap;
  374. text-overflow: ellipsis;
  375. overflow: hidden;
  376. }
  377. }
  378. >section {
  379. border-bottom: 1px solid #e8e8e8;
  380. }
  381. .item {
  382. display: flex;
  383. height: 40px;
  384. justify-content: center;
  385. >div {
  386. display: flex;
  387. align-items: center;
  388. cursor: pointer;
  389. &:hover {
  390. color: #00aea3;
  391. }
  392. >p {
  393. margin-left: 10px;
  394. }
  395. }
  396. }
  397. }
  398. </style>