diff --git a/src/layout/head/Head.tsx b/src/layout/head/Head.tsx index 8d4fc2f..bd82899 100644 --- a/src/layout/head/Head.tsx +++ b/src/layout/head/Head.tsx @@ -38,6 +38,15 @@ import qusetionImg from '../../static/aiUse/qusetion.png' import yesImg from '../../static/aiUse/yes.png' import noImg from '../../static/aiUse/no.png' import tipImg from '../../static/aiUse/tip.png' +import lampImg from '../../static/aiUse/lamp.png' +import resImg from '../../static/aiUse/res.png' +import rightImg from '../../static/aiUse/right.png' +import rescImg from '../../static/aiUse/resc.png' +import greenImg from '../../static/aiUse/green.png' + + + + // import pack from '@theme/pack.png' // import type { TableProps, FormProps } from 'antd'; @@ -140,7 +149,8 @@ import { // post, getUseUrl } from "../../util/AjaxUtils.ts"; -import { getLoginflag } from '../../request/api' +import { getLoginflag, test, test1 } from '../../request/api' + import { GlobalContext, GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts"; import UserEdit from "../../components/user/UserEdit.tsx"; import PasswordChange from "../../components/password/PasswordChange.tsx"; @@ -165,8 +175,13 @@ import NoticeModal from '../../components/NoticeModal/NoticeModal.tsx'; // import { log } from 'console'; // import HeadCouponModal from '../../components/CouponModal/HeadCouponModal.tsx' import aiUseNameBg from '../../static/aiUse/useNameback.png' +import aiUseMatrixBg from '../../static/aiUse/useMatrixback.png' +import con from '../../static/aiUse/contest.png' import closeImg from '../../static/aiUse/close.png' import searchImg from '../../static/aiUse/search.png' +import boxImg from '../../static/aiUse/box.png' + +const { TextArea } = Input; export default function Head() { const aiNameArray = [ // { @@ -385,7 +400,257 @@ export default function Head() { }, ] + const aiMatrixArray = [ + // { + // key:'', + // name: '', + // title: '', + // text: '', + // example: [ + // { + // icon: '', + // title: '', + // text: '' + // } + // ] + // }, + { + key: '1', + name: '工具用途', + title: '产品矩阵构建器的作用是什么?', + text: 'AI软著矩阵规划帮助企业根据现有业务和产品特点,智能生成多个相关软著项目名称,构建完整的知识产权矩阵,提升企业技术实力认定。', + example: [ + { + icon: 'yes', + title: '一次性生成10-20个相关软著名称', + text: '' + }, + { + icon: 'yes', + title: '基于企业业务特点个性化推荐', + text: '' + }, + { + icon: 'yes', + title: '符合高新技术企业认定要求', + text: '' + } + ] + }, + { + key: '2', + name: '输入要求', + title: '需要提供哪些信息?', + text: `现在只需要一句话描述公司与产品领域即可,越清晰越好。`, + example: [ + { + icon: '', + title: '我们是一家做AI客服的SaaS公司,主营智能工单与知识库', + text: '' + }, + { + icon: '', + title: '本地生活电商平台,聚焦商家运营、订单与配送系统', + text: '' + }, + { + icon: '', + title: '工业设备物联网监控,支持远程巡检与异常预警', + text: '' + }, + + ] + }, + { + key: '3', + name: '生成策略', + title: '软著名称是如何生成的?', + text: '基于您提供的企业信息,AI会分析业务特点、技术栈和应用场景,生成符合软著申请规范的项目名称,确保名称具有技术性、创新性和实用性。', + example: [ + + { + icon: 'yes', + title: ' 基于AI的智能客户关系管理系统', + text: '' + }, + { + icon: 'yes', + title: '企业级数据可视化分析平台', + text: '' + }, + { + icon: 'yes', + title: '多渠道营销自动化管理软件', + text: '' + }, + ] + }, + { + key: '4', + name: '企业软著优势', + title: '高新技术企业认定 - 税收优惠的金钥匙', + text: '高新技术企业所得税率从25%降至15%,年节税数十万。享受国家及地方各类创新补贴、研发费用加计扣除。高企认定采用百分制,知识产权占30分的重要权重。', + example: [ + { + icon: '', + title: '成立2年内企业:需6个以上二类知识产权', + text: '' + }, + { + icon: '', + title: '成立2-3年企业:需18个以上,20个以上更佳', + text: '' + }, + { + icon: '', + title: '相较于专利申请周期6-18个月,软著仅需2-3个月', + text: '' + }, + ] + }, + { + key: '5', + name: '企业软著优势', + title: '软件上线必备资质 - 商业化运营通行证', + text: 'APP、网站推广上架的硬性要求。苹果App Store、华为应用市场、小米应用商店等主流平台必备资质。微信小程序、支付宝小程序等平台入驻审核要求。', + example: [ + { + icon: '', + title: '应用商店上架:主流平台必备资质', + text: '' + }, + { + icon: '', + title: '网站备案:软件类网站ICP备案证明材料', + text: '' + }, + { + icon: '', + title: '平台合规:各类小程序平台入驻要求', + text: '' + }, + { + icon: '', + title: '行业准入:金融、教育、医疗等特殊行业合规基础', + text: '' + }, + ] + }, + + { + key: '6', + name: '企业软著优势', + title: '商业合作加分项 - 提升企业竞争力', + text: '项目投标、融资路演的实力证明。体现公司技术资产价值,提升投资方信心。与大型企业合作时展示技术研发能力的重要凭证', + example: [ + { + icon: '', + title: '项目投标:政府采购、企业招标中的技术实力证明', + text: '' + }, + { + icon: '', + title: '融资估值:体现公司技术资产价值,提升投资方信心', + text: '' + }, + { + icon: '', + title: '商务合作:与大型企业合作的技术研发能力凭证', + text: '' + }, + { + icon: '', + title: '商务合作:与大型企业合作的技术研发能力凭证', + text: '' + }, + ] + }, + { + key: '7', + name: '企业软著优势', + title: '知识产权保护 - 50年法律护航', + text: '明确软件著作权归属,有效期长达50年。软件被抄袭、盗用时的有力法律武器。可用于质押贷款、技术入股、许可转让,提升企业技术形象。', + example: [ + { + icon: '', + title: '法律保护:明确软件著作权归属,有效期50年', + text: '' + }, + { + icon: '', + title: '维权利器:软件被抄袭、盗用时的有力法律武器', + text: '' + }, + { + icon: '', + title: '商业价值:可用于质押贷款、技术入股、许可转让', + text: '' + }, + { + icon: '', + title: '品牌建设:提升企业技术形象,增强客户信任度', + text: '' + }, + ] + }, + { + key: '8', + name: '高新认定', + title: '如何助力高新技术企业认定?', + text: '软著是高新技术企业认定的重要加分项。通过构建完整的软著矩阵,可以充分展示企业的技术研发能力和创新实力,提高认定成功率。', + example: [ + { + icon: '', + title: '知识产权评分:最高可获得30分', + text: '' + }, + { + icon: '', + title: '技术先进程度:体现企业技术水平', + text: '' + }, + { + icon: '', + title: '研发组织管理:展现系统化研发能力', + text: '' + }, + ] + }, + { + key: '9', + name: '使用建议', + title: '如何更好地使用这个工具?', + text: '建议详细填写企业信息,特别是业务领域和核心功能。生成的名称可以作为软著申请的起点,后续可以根据具体技术实现进行调整优化。软著申请趁早不趁晚,特别是准备申请高新技术企业认定的公司,建议提前1年开始布局。', + example: [ + { + icon: '', + title: '1. 详细描述企业主营业务', + text: '' + }, + { + icon: '', + title: '2. 列出核心技术和功能特色', + text: '' + }, + { + icon: '', + title: '3. 明确目标用户和应用场景', + text: '' + }, + { + icon: '', + title: '4. 基于生成结果制定软著申请计划', + text: '' + }, + { + icon: 'lamp', + title: '专业提示:准备高企认定的公司,建议提前1年布局软著申请', + text: '' + }, + ] + }, + ] const dispath = useDispatch() @@ -1542,11 +1807,17 @@ export default function Head() { setClostNameExampleArray([]) setComponentKey(1) setAiUseName('') + setUseShow(false) + } const [aiUseNameSpin, setAiUseNameSpin] = useState(false) const [useShow, setUseShow] = useState(false) - const useShowRef = useRef(null); + const [aiUseResultName, setAiUseResultName] = useState('') // 软件名称 + + + // -------------------------------------------------------------------------------------------- + const useItem: MenuProps['items'] = [ { key: '1', @@ -1583,10 +1854,29 @@ export default function Head() { ), onClick: () => { + setAiUseMatrixModal(true) + setMatrixKey(0) } }, ]; + + // AI软著矩阵规划工具弹窗------------------------------------------------------------------------- + const useShowRef = useRef(null); + + const [aiUseMatrixModal, setAiUseMatrixModal] = useState(false) + const [matrixKey, setMatrixKey] = useState(2); // 控制组件重新加载的 key + const [aiUseText, setAiUseText] = useState('') // 软件名称 + const [clostMatrixExampleArray, setClostMatrixExampleArray] = useState([]) + // 初始化AI软著矩阵规划工具弹窗 + const initAiMatrixModal = () => { + setClostMatrixExampleArray([]) + setMatrixKey(2) + setAiUseText('') + setUseShow(false) + } + // -------------------------------------------------------------------------------------------- + return ( <>
{ + onClick={async () => { if (aiUseName) { setTimeout(() => { setUseShow(true) message.success('生成成功') - setTimeout(() => { - useShowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' }); - }, 10); + setAiUseResultName(aiUseName) + }, 3000) - }else{ + try { + const res = await test1(aiUseName) + console.log(res); + + + } + catch (error: any) { + if (error.response) { + const data = error.response.data; + messageApi.open({ + type: 'error', + content: data.msg ? data.msg : `${data.path}(${data.status})`, + }); + } else { + console.error(error) + } + } + } else { message.error('请输入软件名称') } @@ -2934,9 +3240,9 @@ export default function Head() { > 开始检查 - +
- +
-
111
+ }}> +
+
+ + +
+ 检查结果 +
+
+
+ +
检查项目名称
+
+
+ + {aiUseResultName} +
+
+ 总体状态 + 通过 +
+ +
+
+
+
+
+ +
+ AI推荐名称 +
+ +
+
+ 嘻嘻嘻哈哈哈嘎嘎嘎嘎嘎 +
+
+
+ + +
+
+ + +
+ 详细检查结果 +
+
+
+
+
+
+ +
字数检查
+ +
+
+ 通过 +
+
+
字数符合要求(10字以内)
+
+
+ 建议:请在项目名称末尾添加'软件'、'系统'、'平台'或 +
+
+ +
+
+ + +
+
+
+ +
+
+
+
{ + setAiUseMatrixModal(false) + initAiMatrixModal() + + }} + > + + +
+
+
+
+
+ +
+ 一句话描述公司与产品领域 + +
+
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+ 您的软著矩阵 +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+ + 常见问题 +
+
+ 了解产品矩阵构建器的使用方法和高新企业认定要点 +
+
+ { + // 循环aiNameArray这个数组 + aiMatrixArray.map((item) => { + return ( +
+
{ + // 查询clostNameExampleArray这个数组中是否有item.key 如果有的话从这个数组去除 如果没有的话加入这个数组 + setClostMatrixExampleArray(prev => { + if (prev.includes(item.key)) { + // 已存在则移除 + return prev.filter(exampleArrayItem => exampleArrayItem !== item.key); + } else { + // 不存在则添加 + return [...prev, item.key]; + } + }); + + }} + > +
+ +
+
{item.name}
+
{item.title}
+
+
+ { + clostMatrixExampleArray.includes(item.key) ? + : + + } + + +
+
+
{item.text}
+
+
+
+
示例:
+ { + item.example.map((exampleItem, index) => { + return ( +
+ +
+ +
+
+ +
+
+ {exampleItem.title} + +
+
+ {`(${exampleItem.text})`} +
+
+ ) + }) + } + +
+
+
+ ) + }) + + } + +
+
+ +
+
+
{contextHolder} {modalHolder} diff --git a/src/layout/head/head.css b/src/layout/head/head.css index 406046a..545ffa9 100644 --- a/src/layout/head/head.css +++ b/src/layout/head/head.css @@ -557,3 +557,81 @@ margin-right: 10px; margin-top: 3px; } + + +.aiUseNameCheckBoxT { + margin-top: 10px; +} + +.aiUseNameCheckTitle { + font-size: 14px; + color: #91959B; +} + +.aiUseNameCheckName { + font-size: 18px; + font-weight: 700; + /* background-color: skyblue; */ + width: 600px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + +} + +.aiUseNameChecStatus { + font-size: 16px; + color: #FFFFFF; + padding: 5px 15px; + border-radius: 5px; +} +.aiUseNameCheckLine{ + width: 100%; + height: 1px; + background-color: #E9E9E9; + margin-top: 10px; + margin-bottom: 10px; + + +} +.aiUseNameCheckLineSmall{ + width: 100%; + height: 1px; + background-color: #E9E9E9; + margin-top: 20px; + margin-bottom: 20px; +} +.aiUseNameCheckSmall{ + font-size: 18px; +} +.aiUseNameCheckSmallText{ + font-size: 14px; + color:#727A85; + margin-top: 10px; + padding-left: 20px; + +} +.aiUseNameCheckSmallTextBox{ + font-size: 14px; + + background-color: #fae3c4; + color:#e48602; + padding: 5px 10px; + box-sizing: border-box; + border-left: 5px solid #e48602; + max-width: 100%; +} +.aiUseMatrixBigBox{ + background-color: skyblue; + display: flex; + flex-wrap: wrap; + +} +.aiUseMatrixSmallBoxItem{ + margin-left: 10px; + margin-top: 10px; + + width: 240px; + height: 300px; + background-color: pink; +} \ No newline at end of file diff --git a/src/request/api.ts b/src/request/api.ts index 17ff266..6b71155 100644 --- a/src/request/api.ts +++ b/src/request/api.ts @@ -1,4 +1,4 @@ -import {request,aiShopRequest,phoneRequest,newRequest,activityRequset} from './request' +import {request,aiShopRequest,phoneRequest,newRequest,activityRequset,onLineRequest} from './request' // import newRequest from './request' // 开票功能operatorPluginBaseUrl------------------------------------------------------------------------------------------------------------------------------------------------------- // 获取登录标志 @@ -245,3 +245,10 @@ export const expertRegister = (params:any) => aiShopRequest.post(`/aishop/api/tr export const supplementTrademarkData = (params:any) => aiShopRequest.post(`/aishop/api/correction/save-trademark`, params) // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + + + +// 线上测试----------------------------------------------------------------------------------------- +export const test = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/qf3a3c8c?content=${name}`) +export const test1 = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/q4ddb993?content=${name}`) + diff --git a/src/request/request.ts b/src/request/request.ts index 8ff954a..8d32a1c 100644 --- a/src/request/request.ts +++ b/src/request/request.ts @@ -234,6 +234,53 @@ newRequest.interceptors.response.use( //-------------------------------------------------------------------------------------------- +// 开票功能---------------------------------------------------------------------------- +const onLineRequest = axios.create({ + baseURL: 'https://www.aimzhu.com/', + // timeout: 30000, +}); +request.interceptors.request.use( + (config) => { + // 有token带token + const token = sessionStorage.getItem('token') + config.headers = config.headers || {} + config.headers['Auth'] = token ? `Bearer ${token}` : ''; + // config.headers['Content-Type'] = 'application/json'; + // config.data = { unused: 0 } + + if (config.method === 'get' ) { + if (!config.data) { + config.data = { unused: 0 } + } + } + if (config.method === 'put') { + if (!config.data) { + config.data = { unused: 0 } + } + } + if (config.method === 'post') { + if (!config.data) { + config.data = { unused: 0 } + } + } + if (config.method === 'delete') { + if (!config.data) { + config.data = { unused: 0 } + } + } + return config; + }, + + (err) => Promise.reject(err) +); +request.interceptors.response.use( + (res) => { + return res.data; + }, + (err) => Promise.reject(err) +); +//----------------------------------------------------------------------------------------- + // 下载发票 export const downloadInvoice = (id: string) => { return `${operatorPluginBaseUrl}/operator-plugin/route/file/download/false/${id}` @@ -283,4 +330,4 @@ export const uploadDeputeUrl = () => { return `${aiShopBaseUrl}/aishop/api/trademark/upload-weituo-file ` } -export { request,aiShopRequest,phoneRequest,newRequest,activityRequset}; +export { request,aiShopRequest,phoneRequest,newRequest,activityRequset,onLineRequest}; diff --git a/src/static/aiUse/box.png b/src/static/aiUse/box.png new file mode 100644 index 0000000..f7388c1 Binary files /dev/null and b/src/static/aiUse/box.png differ diff --git a/src/static/aiUse/contest.png b/src/static/aiUse/contest.png new file mode 100644 index 0000000..0a496ec Binary files /dev/null and b/src/static/aiUse/contest.png differ diff --git a/src/static/aiUse/green.png b/src/static/aiUse/green.png new file mode 100644 index 0000000..2f1a9c5 Binary files /dev/null and b/src/static/aiUse/green.png differ diff --git a/src/static/aiUse/res.png b/src/static/aiUse/res.png new file mode 100644 index 0000000..a254540 Binary files /dev/null and b/src/static/aiUse/res.png differ diff --git a/src/static/aiUse/resc.png b/src/static/aiUse/resc.png new file mode 100644 index 0000000..ab9aa18 Binary files /dev/null and b/src/static/aiUse/resc.png differ diff --git a/src/static/aiUse/right.png b/src/static/aiUse/right.png new file mode 100644 index 0000000..a88e2d3 Binary files /dev/null and b/src/static/aiUse/right.png differ diff --git a/src/static/aiUse/rightw.png b/src/static/aiUse/rightw.png new file mode 100644 index 0000000..9263d31 Binary files /dev/null and b/src/static/aiUse/rightw.png differ diff --git a/src/static/aiUse/useMatrixback.png b/src/static/aiUse/useMatrixback.png new file mode 100644 index 0000000..8dd493b Binary files /dev/null and b/src/static/aiUse/useMatrixback.png differ