Compare commits

...

2 Commits

Author SHA1 Message Date
lvchenpeng 8f20b63593 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	DigitalHumanWeb/src/app/[variants]/(main)/applicationset/applicationset.tsx
2 months ago
lvchenpeng 1c95013899 迁移 2 months ago

@ -1,528 +1,12 @@
'use client'; 'use client';
import {memo, useEffect, useState} from 'react'; import {PropsWithChildren, memo, useEffect, useState} from 'react';
import {createStyles} from "antd-style"; import {createStyles} from "antd-style";
import {Anchor, Button, Card, Image} from "antd"; import {Anchor, Button, Card, Image} from "antd";
import {RightCircleOutlined, LikeFilled, WechatFilled, HomeFilled, DribbbleSquareFilled, CopyFilled, MedicineBoxFilled, IeCircleFilled, IdcardFilled, HourglassFilled, InsuranceFilled} from "@ant-design/icons"; import {RightCircleOutlined, LikeFilled, WechatFilled, HomeFilled, DribbbleSquareFilled, CopyFilled, MedicineBoxFilled, IeCircleFilled, IdcardFilled, HourglassFilled, InsuranceFilled} from "@ant-design/icons";
// import Link from "next/link"; // import Link from "next/link";
import request from '@/app/request'; import request from '@/app/request';
// import Title from "@/app/(main)/discover/components/Title"; import Title from "../discover/components/Title";
// const stData = {
// "rmtj": [
// {
// id: '061',
// name: "Kimi智能助手",
// sessiontype: 2,
// remark: "Kimi 智能助手,你的私人助理",
// iconurl: "/images/applicationSets/kimi.png",
// website: "https://kimi.moonshot.cn/kimiplus-square"
// },
// {
// id: '062',
// name: "通义千问",
// sessiontype: 2,
// remark: "通义千问是阿里云的大模型类似ChatGPT专注响应人类指令提高生活效率与体验",
// iconurl: "/images/applicationSets/tyqw.png",
// website: "https://tongyi.aliyun.com"
// },
// {
// id: '063',
// name: "文心一言",
// sessiontype: 2,
// remark: "文心一言是百度推出的基于文心大模型的AI对话互动工具",
// iconurl: "/images/applicationSets/wxyy.png",
// website: "https://yiyan.baidu.com"
// },
// {
// id: '064',
// name: "讯飞写作",
// sessiontype: 2,
// remark: "讯飞写作基于讯飞星火认知大模型能力支持多场景写作提供会议纪要求职简历心得体会入党申请论文大纲品宣文案PPT 大纲等各类写作模板",
// iconurl: "/images/applicationSets/xfxz.png",
// website: "https://huixie.iflyrec.com/"
// },
// {
// id: '065',
// name: "即梦",
// sessiontype: 2,
// remark: "即梦Dreamina是一款结合了AI技术的在线创作平台它通过图片生成、智能画布和视频生成等功能帮助用户将创意转化为视觉作品。",
// iconurl: "/images/applicationSets/jm.png",
// website: "https://jimeng.jianying.com/"
// },
// {
// id: '066',
// name: "可灵大模型",
// sessiontype: 2,
// remark: "可灵大模型是一款具备强大视频生成能力的自研大模型,采用先进的技术实现长达 2 分钟视频生成、模拟物理世界特性、概念组合能力等,可生成电影级画面。",
// iconurl: "/images/applicationSets/kldmx.png",
// website: "https://kling.kuaishou.com/"
// },
// {
// id: '067',
// name: "飞书智能伙伴",
// sessiontype: 2,
// remark: "飞书智能伙伴是一款智能助手产品,可以为用户选择自己喜欢的形象、设置姓名,并记忆用户在飞书上的行为,支持部署在飞书上的业务应用,实现跨系统任务完成和统一使用体验。",
// iconurl: "/images/applicationSets/fsznhb.png",
// website: "https://www.feishu.cn/product/ai_companion"
// },
// {
// id: '068',
// name: "硅基智能",
// sessiontype: 2,
// remark: "硅基智能是一款数字化虚拟人与 AI 技术相结合的产品,主要应用于智能交互领域。",
// iconurl: "/images/applicationSets/gjzn.png",
// website: "https://www.guiji.ai/"
// },
// ],
// "chat": [
// {
// id: '071',
// name: "Kimi智能助手",
// sessiontype: 2,
// remark: "Kimi 智能助手,你的私人助理",
// iconurl: "/images/applicationSets/kimi.png",
// website: "https://kimi.moonshot.cn/kimiplus-square"
// },
// {
// id: '072',
// name: "通义千问",
// sessiontype: 2,
// remark: "通义千问是阿里云的大模型类似ChatGPT专注响应人类指令提高生活效率与体验",
// iconurl: "/images/applicationSets/tyqw.png",
// website: "https://tongyi.aliyun.com"
// },
// {
// id: '073',
// name: "文心一言",
// sessiontype: 2,
// remark: "文心一言是百度推出的基于文心大模型的AI对话互动工具",
// iconurl: "/images/applicationSets/wxyy.png",
// website: "https://yiyan.baidu.com"
// },
// {
// id: '074',
// name: "豆包",
// sessiontype: 2,
// remark: "豆包是一款智能聊天机器人,能够与用户进行自然语言交互,提供各种聊天话题,包括天气、新闻、笑话、音乐等。",
// iconurl: "/images/applicationSets/db.png",
// website: "https://www.doubao.com/chat"
// },
// {
// id: '075',
// name: "讯飞星火认知大模型",
// sessiontype: 2,
// remark: "科大讯飞推出的类ChatGPT的讯飞星火认知大模型",
// iconurl: "/images/applicationSets/xfxhrz.png",
// website: "https://xinghuo.xfyun.cn"
// },
// {
// id: '076',
// name: "商量SenseChat",
// sessiontype: 2,
// remark: "商量SenseChat是商汤科技的大语言模型具备语言理解与生成能力像ChatGPT可解复杂问题定制化建议辅助一流文本创作并不断进化",
// iconurl: "/images/applicationSets/senseChat.png",
// website: "https://chat.sensetime.com/wb/chat"
// },
// {
// id: '077',
// name: "智谱清言",
// sessiontype: 2,
// remark: "智谱清言是一款基于ChatGLM2模型开发的人工智能应用具备内容创作、信息归纳总结等能力",
// iconurl: "/images/applicationSets/zpqy.png",
// website: "https://chatglm.cn"
// },
// {
// id: '078',
// name: "360智脑",
// sessiontype: 2,
// remark: "360智脑是360公司推出的中文版本ChatGPT它采用先进的机器学习和自然语言处理技术可以进行高度准确和流畅的中文对话",
// iconurl: "/images/applicationSets/360zn.png",
// website: "https://www.so.com/zt/invite.html"
// },
// {
// id: '079',
// name: "Chatbox",
// sessiontype: 2,
// remark: "Chatbox是一个易于使用的人工智能解决方案支持多平台帮助提升工作和学习效率",
// iconurl: "/images/applicationSets/chatBox.png",
// website: "https://chatboxai.app/zh"
// },
// ],
// "writing": [
// {
// id: '101',
// name: "讯飞写作",
// sessiontype: 2,
// remark: "讯飞写作基于讯飞星火认知大模型能力支持多场景写作提供会议纪要求职简历心得体会入党申请论文大纲品宣文案PPT 大纲等各类写作模板",
// iconurl: "/images/applicationSets/xfxz.png",
// website: "https://huixie.iflyrec.com/"
// },
// {
// id: '102',
// name: "秘塔写作猫",
// sessiontype: 2,
// remark: "秘塔写作猫是一款集AI写作、多人协作、文本校对、改写润色、自动配图等功能为一体的AI Native内容创作平台。",
// iconurl: "/images/applicationSets/mtxzm.png",
// website: "https://xiezuocat.com/"
// },
// {
// id: '103',
// name: "智学AI写作",
// sessiontype: 2,
// remark: "智学AI是款一键生成原创论文的一站式论文服务网站。致力于解决论文写作过程中的各种问题",
// iconurl: "/images/applicationSets/zxAIxz.png",
// website: "https://www.chackai.cn/"
// },
// {
// id: '104',
// name: "YOO必优科技-AI写作",
// sessiontype: 2,
// remark: "AI写作原创内容写作神器-必优科技官网",
// iconurl: "/images/applicationSets/YOO.png",
// website: "https://www.yoo-ai.com/"
// },
// {
// id: '105',
// name: "晓语台",
// sessiontype: 2,
// remark: "晓语台官网,助力高效文本创作的AI平台",
// iconurl: "/images/applicationSets/xyt.png",
// website: "https://www.xiaoyutai.com/"
// },
// {
// id: '106',
// name: "行止AI",
// sessiontype: 2,
// remark: "行止AI官网,多功能的人工智能生成内容平台",
// iconurl: "/images/applicationSets/xzAI.png",
// website: "https://ai.168096.com/web/"
// },
// {
// id: '107',
// name: "红薯通AI",
// sessiontype: 2,
// remark: "红薯通AI小红书内容创作神器",
// iconurl: "/images/applicationSets/hst.png",
// website: "https://www.hongshutong.com/"
// },
// ],
// "conversation": [
// {
// id: '131',
// name: "文心一格",
// sessiontype: 2,
// remark: "文心一格AI艺术和创意辅助平台依托飞桨、文心大模型的技术创新推出的“AI作画”产品可轻松驾驭多种风格人人皆可“一语成画”",
// iconurl: "/images/applicationSets/wxyy.png",
// website: "https://yige.baidu.com/"
// },
// {
// id: '132',
// name: "无界AI",
// sessiontype: 2,
// remark: "无界 AI 是一款集 prompt 搜索、AI 图库、AI 创作、AI 广场、词 / 图等功能于一体的 AI 创作平台。",
// iconurl: "/images/applicationSets/wjAI.png",
// website: "https://www.wujieai.com/"
// },
// {
// id: '133',
// name: "即梦",
// sessiontype: 2,
// remark: "即梦Dreamina是一款结合了AI技术的在线创作平台它通过图片生成、智能画布和视频生成等功能帮助用户将创意转化为视觉作品。",
// iconurl: "/images/applicationSets/jm.png",
// website: "https://jimeng.jianying.com/"
// },
// {
// id: '134',
// name: "LiblibAI",
// sessiontype: 2,
// remark: "LiblibAI是一个中国领先的AI创作平台,提供强大的AI创作能力,帮助创作者实现创意。",
// iconurl: "/images/applicationSets/LiblibAI.png",
// website: "https://www.liblib.art/"
// },
// {
// id: '135',
// name: "触手AI",
// remark: "触手 AI 绘画专业版是一款面向插画师、漫画师、设计师等专业用户的国产 AI 绘图平台。",
// iconurl: "/images/applicationSets/csAI.png",
// website: "https://www.acgnai.art/home"
// },
// ],
// "video": [
// {
// id: '161',
// name: "可灵大模型",
// sessiontype: 2,
// remark: "可灵大模型是一款具备强大视频生成能力的自研大模型,采用先进的技术实现长达 2 分钟视频生成、模拟物理世界特性、概念组合能力等,可生成电影级画面。",
// iconurl: "/images/applicationSets/kldmx.png",
// website: "https://kling.kuaishou.com/"
// },
// {
// id: '162',
// name: "即梦",
// sessiontype: 2,
// remark: "即梦Dreamina是一款结合了AI技术的在线创作平台它通过图片生成、智能画布和视频生成等功能帮助用户将创意转化为视觉作品。",
// iconurl: "/images/applicationSets/jm.png",
// website: "https://jimeng.jianying.com/"
// },
// {
// id: '163',
// name: "Moki",
// sessiontype: 2,
// remark: "Moki是美图公司推出的AI短片创作工具专注于辅助视频创作者打造动画短片、网文短剧、故事绘本和音乐视频MV。",
// iconurl: "/images/applicationSets/moki.png",
// website: "https://www.moki.cn/home"
// },
// {
// id: '164',
// name: "一帧秒创",
// sessiontype: 2,
// remark: "一帧秒创是基于秒创AIGC引擎的智能AI内容生成平台包含AI图文转视频、AI作画创作平台AI帮写",
// iconurl: "/images/applicationSets/yzmc.png",
// website: "https://aigc.yizhentv.com/"
// },
// {
// id: '165',
// name: "万彩AI",
// remark: "一款强大的AI内容创作工具合集除了提供AI智能写作支持之外还集成了AI换脸、照片数字人制作和AI短视频制作等强大的AI生成内容功能。",
// iconurl: "/images/applicationSets/wcAI.png",
// website: "https://ai.kezhan365.com/"
// },
// {
// id: '166',
// name: "闪剪智能",
// remark: "闪剪智能是全球超2亿用户都在用的AI视频创作平台旗下有闪剪、逗拍、趣推、字说、Vinkle等软件",
// iconurl: "/images/applicationSets/sjzn.png",
// website: "https://corp.shanjian.tv/"
// },
// ],
// "office": [
// {
// id: '171',
// name: "通义听悟",
// sessiontype: 2,
// remark: "阿里云通义听悟是聚焦音视频内容的工作学习 AI 助手,依托大模型,帮助用户记录、整理和分析音视频内容。通过实时语音转文字、多语言同步翻译,提供高效学习体验。",
// iconurl: "/images/applicationSets/tytw.png",
// website: "https://tingwu.aliyun.com/"
// },
// {
// id: '172',
// name: "WPS AI",
// sessiontype: 2,
// remark: "WPS AI是一款智能办公助手能够帮助用户完成文本改写、续写、生成PPT、数据处理、语音交互等多项功能。",
// iconurl: "/images/applicationSets/WPS.png",
// website: "https://ai.wps.cn/"
// },
// {
// id: '173',
// name: "星火文档问答",
// sessiontype: 2,
// remark: "讯飞星火知识库文档问答是科大讯飞基于讯飞星火大模型和星火知识库搭建的文档问答服务,能够高效检索文档信息,准确回答专业问题。",
// iconurl: "/images/applicationSets/xhwdwd.png",
// website: "https://chatdoc.xfyun.cn/"
// },
// {
// id: '174',
// name: "飞书智能伙伴",
// sessiontype: 2,
// remark: "飞书智能伙伴是一款智能助手产品,可以为用户选择自己喜欢的形象、设置姓名,并记忆用户在飞书上的行为,支持部署在飞书上的业务应用,实现跨系统任务完成和统一使用体验。",
// iconurl: "/images/applicationSets/fsznhb.png",
// website: "https://www.feishu.cn/product/ai_companion"
// },
// {
// id: '175',
// name: "TreeMind 树图",
// sessiontype: 2,
// remark: "TreeMind 树图是新一代思维导图软件,提供便捷的在线思维导图制作工具。",
// iconurl: "/images/applicationSets/treeMind.png",
// website: "https://shutu.cn/"
// },
// {
// id: '176',
// name: "亿图脑图",
// sessiontype: 2,
// remark: "亿图脑图是一款多平台思维导图软件,可用于 WindowsMac 和 Linux 等桌面环境,也可以在线使用或在苹果,安卓等移动端上使用。",
// iconurl: "/images/applicationSets/ytnt.png",
// website: "https://www.edrawsoft.cn/mindmaster/ad-mindmaster6-1.html"
// },
// ],
// "digitalPeople": [
// {
// id: '181',
// name: "硅基智能",
// sessiontype: 2,
// remark: "硅基智能是一款数字化虚拟人与 AI 技术相结合的产品,主要应用于智能交互领域。",
// iconurl: "/images/applicationSets/gjzn.png",
// website: "https://www.guiji.ai/"
// },
// {
// id: '182',
// name: "怪兽ai数字人",
// sessiontype: 2,
// remark: "怪兽AI数字人提供2D数字人和3D数字人的商业应用同时提供共享、定制和克隆数字人形象以及真人声音克隆等身份制作服务。",
// iconurl: "/images/applicationSets/ksAIszr.png",
// website: "https://www.guaishouai.com/"
// },
// {
// id: '183',
// name: "奇妙问",
// sessiontype: 2,
// remark: "奇妙问官网开启数字人3.0时代。",
// iconurl: "/images/applicationSets/qmw.png",
// website: "https://ai.weta365.com/"
// },
// {
// id: '184',
// name: "工作数字人",
// sessiontype: 2,
// remark: "工作数字人官网,开启高效工作办公之旅",
// iconurl: "/images/applicationSets/gzszr.png",
// website: "https://workbrain.cn/"
// },
// ],
// "education": [
// {
// id: '191',
// name: "星火语伴",
// sessiontype: 2,
// remark: "星火语伴APP一款专为英语学习者打造的学习伙伴",
// iconurl: "/images/applicationSets/xhyb.png",
// website: "https://www.xfxuexi.com/#/aiTalk"
// },
// {
// id: '192',
// name: "Masterly ai",
// sessiontype: 2,
// remark: "Masterlyai是一个雅思备考助手口语写作练习",
// iconurl: "/images/applicationSets/MasterlyAI.png",
// website: "https://www.masterlyai.com/"
// },
// {
// id: '193',
// name: "TalkAI",
// sessiontype: 2,
// remark: "TalkAI是一款专为想要学习语言的人打造的学习助手AI练口语支持超过60种语言。",
// iconurl: "/images/applicationSets/TalkAI.png",
// website: "https://ttalkai.com/"
// },
// {
// id: '194',
// name: "FeelRead 飞阅",
// sessiontype: 2,
// remark: "一款微信生态内的AI Reading Copilot 小程序互动式阅读助手可与文对话。AI自动分析&阅读在线文章与文档PDF/Word。",
// iconurl: "/images/applicationSets/FeelRead.png",
// website: "https://app.jiajiaqun.cn/"
// },
// ],
// "programming": [
// {
// id: '121',
// name: "文心快码",
// sessiontype: 2,
// remark: "码随心动,快人一步,更懂你的智能代码助手",
// iconurl: "/images/applicationSets/wxyy.png",
// website: "https://comate.baidu.com/zh"
// },
// {
// id: '122',
// name: "通义灵码",
// sessiontype: 2,
// remark: "灵动指间,快码加编,你的智能编码助手。基于通义大模型,提供代码智能生成、研发智能问答能力",
// iconurl: "/images/applicationSets/tylm.png",
// website: "https://tongyi.aliyun.com/lingma/"
// },
// {
// id: '123',
// name: "codeFuse",
// sessiontype: 2,
// remark: "codeFuse 是一个能够辅助开发者进行代码补全、添加注释、解释代码等功能的插件。",
// iconurl: "/images/applicationSets/codeFuse.png",
// website: "https://codefuse.alipay.com/welcome/product"
// },
// {
// id: '124',
// name: "星火飞码 iFlyCode",
// sessiontype: 2,
// remark: "iFlyCode智能编程助手是一款基于讯飞星火认知大模型的智能编程工具。它能够智能生成代码、解释代码、纠错代码、进行单元测试以及提供智能问答功能。",
// iconurl: "/images/applicationSets/iFlyCode.png",
// website: "https://iflycode.xfyun.cn/index"
// },
// {
// id: '125',
// name: "天工智码 SkyCode",
// sessiontype: 2,
// remark: "天工智码 SkyCode 是一款 AI 代码生成工具,支持各种主流编程语言,助力开发人员更快更好的编码。",
// iconurl: "/images/applicationSets/SkyCode.png",
// website: "https://sky-code.singularity-ai.com/index.html"
// },
// {
// id: '126',
// name: "CodeArts Snap",
// sessiontype: 2,
// remark: "CodeArts Snap是华为云自研的基于盘古研发大模型的智能开发助手。",
// iconurl: "/images/applicationSets/CodeArtsSnap.png",
// website: "https://www.huaweicloud.com/product/codeartside/snap.html"
// },
// {
// id: '127',
// name: "Fitten Code",
// sessiontype: 2,
// remark: "Fitten Code是一个GPT驱动的代码生成和完成工具支持多种语言Python、Javascript、Typescript、Java等。",
// iconurl: "/images/applicationSets/FittenCode.png",
// website: "https://code.fittentech.com/"
// },
// ],
// "audio": [
// {
// id: '151',
// name: "魔音工坊",
// sessiontype: 2,
// remark: "魔音工坊是一款功能强大的在线智能配音工具,能够快速高效地实现文字到语音的转换。它拥有强大的语音合成技术,提供真人录音质量的配音效果。",
// iconurl: "/images/applicationSets/mygf.png",
// website: "https://www.moyin.com/"
// },
// {
// id: '152',
// name: "天工SkyMusic",
// sessiontype: 2,
// remark: "基于昆仑万维「天工3.0」超级大模型打造的AI音乐生成大模型「天工SkyMusic」支持高质量AI音乐生成、人声合成、歌词段落控制、多种音乐风格和音乐智能表达等功能。",
// iconurl: "/images/applicationSets/SkyMusic.png",
// website: "https://home.tiangong.cn/downloadGuide"
// },
// {
// id: '153',
// name: "讯飞开放平台",
// sessiontype: 2,
// remark: "科大讯飞推出的移动互联网智能交互平台为开发者免费提供涵盖语音能力增强型SDK一站式人机智能语音交互解决方案专业全面的移动应用分析",
// iconurl: "/images/applicationSets/xfkfpt.png",
// website: "https://www.xfyun.cn/"
// },
// {
// id: '154',
// name: "依图语音开放平台",
// sessiontype: 2,
// remark: "依图语音开放平台",
// iconurl: "/images/applicationSets/ytyykfpt.png",
// website: "https://speech.yitutech.com/"
// },
// {
// id: '155',
// name: "REECHO 睿声",
// sessiontype: 2,
// remark: "REECHO.AI 睿声是一个超拟真的人工智能语音克隆平台。用户可以上传语音样本,系统利用深度学习技术进行语音克隆,生成质量极高的 AI 语音,可以实现不同人物的语音风格转换。",
// iconurl: "/images/applicationSets/REECHO.png",
// website: "https://www.reecho.cn/"
// },
// {
// id: '156',
// name: "NovaMSS",
// sessiontype: 2,
// remark: "NovaMSS是一款基于最顶级的AI模型调优后的新一代音乐源分离工具可以一键提取伴奏、人声、贝斯、鼓点、分离音轨等。",
// iconurl: "/images/applicationSets/NovaMSS.png",
// website: "https://novamss.com/"
// },
// ]
// }
const stList = [ const stList = [
{ {
@ -716,7 +200,7 @@ const onClickAncho = (e) => {
// block: 'start' // block: 'start'
// }) // })
} }
const ApplicationSet = memo(() => { const ApplicationSet = memo<PropsWithChildren>(( ) => {
const { styles, cx } = useStyles() const { styles, cx } = useStyles()
const [val, setVal] = useState("AI") const [val, setVal] = useState("AI")
const [achVal, setAchVal] = useState("#rmtj") const [achVal, setAchVal] = useState("#rmtj")
@ -1069,7 +553,7 @@ const ApplicationSet = memo(() => {
</> </>
: :
<div style={{margin: '0 auto', width: '90%'}}> <div style={{margin: '0 auto', width: '90%'}}>
{/*<Title tag={stList.length}>助手列表</Title>*/} <Title tag={stList.length}></Title>
<div> <div>
{ {
stList.map((e) => { stList.map((e) => {

@ -154,19 +154,9 @@ const AssistantCard = memo<AssistantCardProps>(
} }
return ( return (
<Flexbox className={cx(styles.container, className)} gap={24} style={style}> <Flexbox className={cx(styles.container, className)} gap={24} style={style} {...rest}>
{!isCompact && ( {!isCompact && <CardBanner avatar={avatar} />}
<div
onClick={() => {
router.push(href);
}}
>
<CardBanner avatar={avatar} />
</div>
)}
<Flexbox gap={12} padding={16}> <Flexbox gap={12} padding={16}>
<Link href={href}>
<Flexbox gap={12}>
<Flexbox <Flexbox
align={isCompact ? 'flex-start' : 'flex-end'} align={isCompact ? 'flex-start' : 'flex-end'}
gap={16} gap={16}
@ -225,16 +215,13 @@ const AssistantCard = memo<AssistantCardProps>(
<Paragraph className={styles.desc} ellipsis={{ rows: 2 }}> <Paragraph className={styles.desc} ellipsis={{ rows: 2 }}>
{description} {description}
</Paragraph> </Paragraph>
</Flexbox>
</Link>
<Flexbox gap={6} horizontal style={{ flexWrap: 'wrap' }}> <Flexbox gap={6} horizontal style={{ flexWrap: 'wrap', justifyContent: "space-between" }}>
<div onClick={(e) => {e.stopPropagation()}} style={{width: '85%'}}>
{showCategory && categoryItem ? ( {showCategory && categoryItem ? (
<Link href={urlJoin('/discover/assistants', categoryItem.key)}>
<Tag icon={categoryItem.icon} style={{ margin: 0 }}> <Tag icon={categoryItem.icon} style={{ margin: 0 }}>
{categoryItem.label} {categoryItem.label}
</Tag> </Tag>
</Link>
) : ( ) : (
tags tags
.slice(0, 4) .slice(0, 4)
@ -253,6 +240,7 @@ const AssistantCard = memo<AssistantCardProps>(
); );
}) })
)} )}
</div>
</Flexbox> </Flexbox>
</Flexbox> </Flexbox>
</Flexbox> </Flexbox>

@ -38,46 +38,46 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
}; };
}, [stData, mobile]); }, [stData, mobile]);
// useEffect(() => { useEffect(() => {
// const fetchData = async() => { const fetchData = async() => {
// if(category === "collect") { if(category === "collect") {
// const res = await request({ const res = await request({
// method: "get", method: "get",
// params: { params: {
// userid: userId userid: userId
// }, },
// url: "/flxai/api/robot/appaiassistant/getAllAiAssistant" url: "/flxai/api/robot/appaiassistant/getAllAiAssistant"
// }) })
// setStData(res?.data.map((item)=> { setStData(res?.data.map((item)=> {
// item.classify = 'collect'; item.classify = 'collect';
// return item return item
// })) }))
// } else { } else {
// const res = await request({ const res = await request({
// method: "get", method: "get",
// params: { params: {
// userid: userId userid: userId
// }, },
// url: "/flxai/api/robot/appaiassistant/getAllAiAssistant" url: "/flxai/api/robot/appaiassistant/getAllAiAssistant"
// }) })
// const array2Object = {}; const array2Object = {};
// res?.data?.forEach((item) => { res?.data?.forEach((item) => {
// array2Object[item.identifier] = item; array2Object[item.identifier] = item;
// }); });
// setStData(stData?.map((item)=> { setStData(stData?.map((item)=> {
// const matchingItem = array2Object[item.identifier]; const matchingItem = array2Object[item.identifier];
// if (matchingItem) { if (matchingItem) {
// matchingItem.status = '1'; matchingItem.status = '1';
// return matchingItem return matchingItem
// } else { } else {
// item.status = '0'; item.status = '0';
// return item return item
// } }
// })) }))
// } }
// }; };
// fetchData(); fetchData();
// }, []); // 空数组[]意味着仅在组件挂载时调用一次 }, []); // 空数组[]意味着仅在组件挂载时调用一次
const handleClickCard = (item) => { const handleClickCard = (item) => {
console.log(item) console.log(item)
@ -93,13 +93,15 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
data={all} data={all}
initialItemCount={24} initialItemCount={24}
itemContent={(_, item) => ( itemContent={(_, item) => (
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card <Card
href={urlJoin('/discover/assistant/', item.identifier)} // href={urlJoin('/discover/assistant/', item.identifier)}
key={item.identifier} key={item.identifier}
showCategory showCategory
variant={'compact'} variant={'compact'}
{...item} {...item}
/> />
</div>
)} )}
style={{ style={{
minHeight: '75vh', minHeight: '75vh',
@ -117,7 +119,11 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
<Grid maxItemWidth={280} rows={4}> <Grid maxItemWidth={280} rows={4}>
{all?.map((item) => ( {all?.map((item) => (
// <Link href={urlJoin('/discover/assistant/', item.identifier)} key={item.identifier}> // <Link href={urlJoin('/discover/assistant/', item.identifier)} key={item.identifier}>
<Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} />
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card key={item.identifier} showCategory={!category} {...item} />
</div>
// <Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} />
// </Link> // </Link>
))} ))}
</Grid> </Grid>
@ -127,12 +133,14 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
<Title>{t('assistants.recentSubmits')}</Title> <Title>{t('assistants.recentSubmits')}</Title>
<Grid maxItemWidth={280} rows={4}> <Grid maxItemWidth={280} rows={4}>
{recent.map((item) => ( {recent.map((item) => (
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card <Card
href={urlJoin('/discover/assistant/', item.identifier)} // href={urlJoin('/discover/assistant/', item.identifier)}
key={item.identifier} key={item.identifier}
showCategory={!category} showCategory={!category}
{...item} {...item}
/> />
</div>
))} ))}
</Grid> </Grid>
{last && last?.length > 0 && ( {last && last?.length > 0 && (
@ -142,13 +150,15 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
data={last} data={last}
initialItemCount={12} initialItemCount={12}
itemContent={(_, item) => ( itemContent={(_, item) => (
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card <Card
href={urlJoin('/discover/assistant/', item.identifier)} // href={urlJoin('/discover/assistant/', item.identifier)}
key={item.identifier} key={item.identifier}
showCategory={!category} showCategory={!category}
variant={'compact'} variant={'compact'}
{...item} {...item}
/> />
</div>
)} )}
style={{ style={{
minHeight: '75vh', minHeight: '75vh',

@ -143,8 +143,11 @@ const ModelCard = memo<ModelCardProps>(({ className,socialData, meta, identifier
return; return;
} }
}; };
const handleClickCard = (item) => {
console.log(item)
}
return ( return (
<Flexbox className={cx(styles.container, className)} gap={24} key={identifier}> <Flexbox className={cx(styles.container, className)} gap={24} key={identifier} {...rest}>
<Flexbox <Flexbox
gap={12} gap={12}
padding={16} padding={16}

@ -28,56 +28,58 @@ const List = memo<ListProps>(({ category, searchKeywords, items = [] }) => {
const userId = getUserId(useUserStore.getState()) const userId = getUserId(useUserStore.getState())
const [stData, setStData] = useState(items) const [stData, setStData] = useState(items)
// useEffect(() => { useEffect(() => {
// const fetchData = async() => { const fetchData = async() => {
// if(category === "collect") { if(category === "collect") {
// const res = await request({ const res = await request({
// method: "get", method: "get",
// params: { params: {
// userid: userId userid: userId
// }, },
// url: "/flxai/api/robot/appaimodel/getAllAiModel", url: "/flxai/api/robot/appaimodel/getAllAiModel",
// }) })
// setStData(res?.data.map((item)=> { setStData(res?.data.map((item)=> {
item.classify = 'collect';
return item
}))
// items = res.data;
// items = items.map((item)=> {
// item.classify = 'collect'; // item.classify = 'collect';
// return item // return item
// }))
// // items = res.data;
// // items = items.map((item)=> {
// // item.classify = 'collect';
// // return item
// // })
// } else {
// const res = await request({
// method: "get",
// params: {
// userid: userId
// },
// url: "/flxai/api/robot/appaimodel/getAllAiModel",
// }) // })
// const array2Object = {}; } else {
// res?.data?.forEach(item => { const res = await request({
// array2Object[item.identifier] = item; method: "get",
// }); params: {
// setStData(stData.map((item)=> { userid: userId
// const matchingItem = array2Object[item.identifier]; },
// if (matchingItem) { url: "/flxai/api/robot/appaimodel/getAllAiModel",
// matchingItem.status = '1'; })
// return matchingItem const array2Object = {};
// } else { res?.data?.forEach(item => {
// item.status = '0'; array2Object[item.identifier] = item;
// return item });
// } setStData(stData.map((item)=> {
// })) const matchingItem = array2Object[item.identifier];
// } if (matchingItem) {
// }; matchingItem.status = '1';
// fetchData(); return matchingItem
// }, []); // 空数组[]意味着仅在组件挂载时调用一次 } else {
item.status = '0';
return item
}
}))
}
};
fetchData();
}, []); // 空数组[]意味着仅在组件挂载时调用一次
const handleClickCard = (item) => { const handleClickCard = (item) => {
console.log(item) console.log(item)
// console.log(router)
router.push(urlJoin('/discover/model/', item.identifier)) router.push(urlJoin('/discover/model/', item.identifier))
} }
if (searchKeywords) { if (searchKeywords) {
if (!stData || stData?.length === 0) return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />; if (!stData || stData?.length === 0) return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />;
return ( return (
@ -87,7 +89,10 @@ const List = memo<ListProps>(({ category, searchKeywords, items = [] }) => {
data={stData} data={stData}
initialItemCount={24} initialItemCount={24}
itemContent={(_, item) => ( itemContent={(_, item) => (
<Card onClick={() => handleClickCard(item)} showCategory {...item} /> // <Card href={urlJoin('/discover/model/', item.identifier)} showCategory {...item} />
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card key={item.identifier} showCategory {...item} />
</div>
)} )}
style={{ style={{
minHeight: '75vh', minHeight: '75vh',
@ -105,7 +110,10 @@ const List = memo<ListProps>(({ category, searchKeywords, items = [] }) => {
<Grid maxItemWidth={280} rows={4}> <Grid maxItemWidth={280} rows={4}>
{stData.map((item) => ( {stData.map((item) => (
// <Link href={urlJoin('/discover/assistant/', item.identifier)} key={item.identifier}> // <Link href={urlJoin('/discover/assistant/', item.identifier)} key={item.identifier}>
<Card style={{boxShadow: "1px 0px 12px 0px rgba(42, 77, 255, 0.19)"}} key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} /> // <Card style={{boxShadow: "1px 0px 12px 0px rgba(42, 77, 255, 0.19)"}} key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} />
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card key={item.identifier} showCategory={!category} {...item} />
</div>
// </Link> // </Link>
))} ))}
</Grid> </Grid>
@ -118,7 +126,10 @@ const List = memo<ListProps>(({ category, searchKeywords, items = [] }) => {
initialItemCount={24} initialItemCount={24}
itemContent={(_, item) => ( itemContent={(_, item) => (
// <Link href={urlJoin('/discover/model/', item.identifier)} key={item.identifier}> // <Link href={urlJoin('/discover/model/', item.identifier)} key={item.identifier}>
<Card style={{boxShadow: "1px 0px 12px 0px rgba(42, 77, 255, 0.19)"}} key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} /> // <Card style={{boxShadow: "1px 0px 12px 0px rgba(42, 77, 255, 0.19)"}} onClick={() => handleClickCard(item)} key={item.identifier} showCategory={!category} {...item} />
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card key={item.identifier} showCategory={!category} {...item} />
</div>
// </Link> // </Link>
)} )}
style={{ style={{

@ -35,47 +35,47 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
}; };
}, [stData, mobile]); }, [stData, mobile]);
// useEffect(() => { useEffect(() => {
// const fetchData = async() => { const fetchData = async() => {
// if(category === "collect") { if(category === "collect") {
// const res = await request({ const res = await request({
// method: "get", method: "get",
// params: { params: {
// userid: userId userid: userId
// }, },
// url: "/flxai/api/robot/appaiplugin/getAllAiPlugin", url: "/flxai/api/robot/appaiplugin/getAllAiPlugin",
// }) })
// setStData(res?.data.map((item)=> { setStData(res?.data.map((item)=> {
// item.classify = 'collect'; item.classify = 'collect';
// return item return item
// })) }))
// } else { } else {
// const res = await request({ const res = await request({
// method: "get", method: "get",
// params: { params: {
// userid: userId userid: userId
// }, },
// url: "/flxai/api/robot/appaiplugin/getAllAiPlugin", url: "/flxai/api/robot/appaiplugin/getAllAiPlugin",
// }) })
// const array2Object = {}; const array2Object = {};
// res?.data?.forEach((item) => { res?.data?.forEach((item) => {
// array2Object[item.identifier] = item; array2Object[item.identifier] = item;
// }); });
// // console.log('chajian22222222222222222222222222222--------------') // console.log('chajian22222222222222222222222222222--------------')
// setStData(stData.map((item)=> { setStData(stData.map((item)=> {
// const matchingItem = array2Object[item.identifier]; const matchingItem = array2Object[item.identifier];
// if (matchingItem) { if (matchingItem) {
// matchingItem.status = '1'; matchingItem.status = '1';
// return matchingItem return matchingItem
// } else { } else {
// item.status = '0'; item.status = '0';
// return item return item
// } }
// })) }))
// } }
// }; };
// fetchData(); fetchData();
// }, []); // 空数组[]意味着仅在组件挂载时调用一次 }, []); // 空数组[]意味着仅在组件挂载时调用一次
// console.log('chajian999999999999999--------------',stData) // console.log('chajian999999999999999--------------',stData)
@ -92,13 +92,14 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
data={all} data={all}
initialItemCount={24} initialItemCount={24}
itemContent={(_, item) => ( itemContent={(_, item) => (
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card <Card
showCategory showCategory
variant={'compact'} variant={'compact'}
{...item} {...item}
href={urlJoin('/discover/plugin/', item.identifier)}
key={item.identifier} key={item.identifier}
/> />
</div>
)} )}
style={{ style={{
minHeight: '75vh', minHeight: '75vh',
@ -114,10 +115,11 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
<> <>
<Title tag={all.length}></Title> <Title tag={all.length}></Title>
<Grid maxItemWidth={280} rows={4}> <Grid maxItemWidth={280} rows={4}>
{all?.map((item) => ( {all?.map((item,index) => (
// <Link href={urlJoin('/discover/assistant/', item.identifier)} key={item.identifier}> // <div onClick={() => handleClickCard(item)}>测试接口</div>
<Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} /> <div onClick={() => handleClickCard(item)} key={item.identifier}>
// </Link> <Card key={item.identifier} showCategory={!category} {...item} />
</div>
))} ))}
</Grid> </Grid>
</> </>
@ -126,7 +128,10 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
<Title>{t('plugins.recentSubmits')}</Title> <Title>{t('plugins.recentSubmits')}</Title>
<Grid maxItemWidth={280} rows={4}> <Grid maxItemWidth={280} rows={4}>
{recent?.map((item) => ( {recent?.map((item) => (
<Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} /> // <Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} {...item} />
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card key={item.identifier} showCategory={!category} {...item} />
</div>
))} ))}
</Grid> </Grid>
{last && last?.length > 0 && ( {last && last?.length > 0 && (
@ -136,7 +141,10 @@ const List = memo<ListProps>(({ category, mobile, searchKeywords, items = [] })
data={last} data={last}
initialItemCount={12} initialItemCount={12}
itemContent={(_, item) => ( itemContent={(_, item) => (
<Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} variant={'compact'} {...item} /> // <Card key={item.identifier} onClick={() => handleClickCard(item)} showCategory={!category} variant={'compact'} {...item} />
<div onClick={() => handleClickCard(item)} key={item.identifier}>
<Card key={item.identifier} showCategory={!category} {...item} />
</div>
)} )}
style={{ style={{
minHeight: '75vh', minHeight: '75vh',

@ -45,7 +45,7 @@ const StoreSearchBar = memo<StoreSearchBarProps>(({ mobile, onBlur, onFocus, ...
const activeType = activeKey === DiscoverTab.Home ? DiscoverTab.Assistants : activeKey; const activeType = activeKey === DiscoverTab.Home ? DiscoverTab.Assistants : activeKey;
const userId = getUserId(useUserStore.getState()) const userId = getUserId(useUserStore.getState())
console.log(userId,'storeSearch3333333333333----')
useEffect(() => { useEffect(() => {
if (!pathname.includes('/discover/search')) return; if (!pathname.includes('/discover/search')) return;
// 使用 useQueryState 时,当 handleSearch 为空时无法回跳 // 使用 useQueryState 时,当 handleSearch 为空时无法回跳

@ -23,9 +23,6 @@ const Layout = async ({ children }: PropsWithChildren) => {
width={'100%'} width={'100%'}
> >
<Flexbox gap={24} horizontal style={{ position: 'relative' }} width={'100%'}> <Flexbox gap={24} horizontal style={{ position: 'relative' }} width={'100%'}>
<CategoryContainer top={32}>
<Category />
</CategoryContainer>
<Flexbox flex={1} gap={16}> <Flexbox flex={1} gap={16}>
{children} {children}
</Flexbox> </Flexbox>

@ -16,6 +16,7 @@ const AssistantsResult = async ({
q: string; q: string;
userid: string; userid: string;
}) => { }) => {
console.log(userid,'222222')
const res = await request({ const res = await request({
method: "get", method: "get",
params: { params: {

@ -25,7 +25,7 @@ type Props = PageProps<
const getSharedProps = async (props: Props) => { const getSharedProps = async (props: Props) => {
const searchParams = await props.searchParams; const searchParams = await props.searchParams;
const { q, type = 'assistants' } = searchParams; const { q, type = 'assistants',userid } = searchParams;
const { isMobile, locale: hl } = await RouteVariants.getVariantsFromProps(props); const { isMobile, locale: hl } = await RouteVariants.getVariantsFromProps(props);
const { t, locale } = await translation('metadata', searchParams?.hl || hl); const { t, locale } = await translation('metadata', searchParams?.hl || hl);
return { return {
@ -34,6 +34,7 @@ const getSharedProps = async (props: Props) => {
q, q,
t, t,
type, type,
userid,
}; };
}; };
@ -51,6 +52,7 @@ export const generateMetadata = async (props: Props) => {
const Page = async (props: Props) => { const Page = async (props: Props) => {
const { locale, t, q, type, isMobile,userid } = await getSharedProps(props); const { locale, t, q, type, isMobile,userid } = await getSharedProps(props);
console.log(userid,'search88888888888888----')
if (!q) redirect(urlJoin(`/discover`, type)); if (!q) redirect(urlJoin(`/discover`, type));
const keywords = decodeURIComponent(q); const keywords = decodeURIComponent(q);

@ -25,6 +25,7 @@ export const config = {
'/discover(.*)', '/discover(.*)',
'/chat', '/chat',
'/chat(.*)', '/chat(.*)',
'/applicationset(.*)',
'/changelog(.*)', '/changelog(.*)',
'/settings(.*)', '/settings(.*)',
'/files', '/files',

Loading…
Cancel
Save