This commit is contained in:
lyp 2025-08-29 16:43:20 +08:00
parent 7d670ba2d6
commit a8b04abdb1
12 changed files with 970 additions and 18 deletions

View File

@ -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<HTMLDivElement>(null);
const [aiUseResultName, setAiUseResultName] = useState('') // 软件名称
// --------------------------------------------------------------------------------------------
const useItem: MenuProps['items'] = [
{
key: '1',
@ -1583,10 +1854,29 @@ export default function Head() {
</div>
),
onClick: () => {
setAiUseMatrixModal(true)
setMatrixKey(0)
}
},
];
// AI软著矩阵规划工具弹窗-------------------------------------------------------------------------
const useShowRef = useRef<HTMLDivElement>(null);
const [aiUseMatrixModal, setAiUseMatrixModal] = useState(false)
const [matrixKey, setMatrixKey] = useState(2); // 控制组件重新加载的 key
const [aiUseText, setAiUseText] = useState('') // 软件名称
const [clostMatrixExampleArray, setClostMatrixExampleArray] = useState<any[]>([])
// 初始化AI软著矩阵规划工具弹窗
const initAiMatrixModal = () => {
setClostMatrixExampleArray([])
setMatrixKey(2)
setAiUseText('')
setUseShow(false)
}
// --------------------------------------------------------------------------------------------
return (
<>
<div className="head" style={{
@ -2916,16 +3206,32 @@ export default function Head() {
borderRadius: 10,
marginLeft: 20,
}}
onClick={() => {
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() {
>
<img src={searchImg} alt="" width={18} height={20} /></Button>
</div>
</div>
</div>
<div style={
@ -2950,19 +3256,168 @@ export default function Head() {
height: 20,
marginTop: -20,
}}
ref={useShowRef}
// ref={useShowRef}
>
</div>
<div className='aiUseNameResultBox'
<div style={{
style={{
display: useShow ? 'block' : 'none'
display: useShow ? 'block' : 'none'
}}
>111</div>
}}>
<div className='aiUseNameResultBox'
>
<div style={{
display: 'flex',
// justifyContent: 'center',
alignItems: 'center',
}}>
<img src={resImg} width={15} height={15} style={{
marginTop: 2,
}} alt="" />
<div style={{
fontSize: 18,
fontWeight: 700,
marginLeft: 5,
}}>
</div>
</div>
<div className='aiUseNameCheckBoxT'>
<div className='aiUseNameCheckTitle'></div>
<div style={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
marginTop: 5,
}}>
<div className='aiUseNameCheckName' title={aiUseResultName}>
{aiUseResultName}
</div>
<div>
<span className='aiUseNameCheckTitle' style={{
marginRight: 10,
}}></span>
<span className='aiUseNameChecStatus'
style={{
background: '#39B551'
}}
></span>
</div>
</div>
</div>
<div className='aiUseNameCheckLine'></div>
<div>
<div className='aiUseNameCheckTitle' style={{
display: 'flex',
alignItems: 'center',
}}>
<img src={rightImg} alt="" height={15} style={{
marginTop: 2,
marginRight: 5,
}} />
<div style={{
color: '#00AE00'
}}>
AI推荐名称
</div>
</div>
<div className='aiUseNameCheckName' style={{
marginTop: 10,
}}>
</div>
</div>
</div>
<div className='aiUseNameResultBox'>
<div style={{
display: 'flex',
// justifyContent: 'center',
alignItems: 'center',
}}>
<img src={rescImg} width={15} height={15} style={{
marginTop: 3,
}} alt="" />
<div style={{
fontSize: 18,
fontWeight: 700,
marginLeft: 5,
// marginBottom: 10,
}}>
</div>
</div>
<div style={{
marginTop: 20,
}}>
<div>
<div style={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
}}>
<div style={{
display: 'flex',
alignItems: 'center',
}}>
<img src={greenImg} alt="" height={18} style={{
marginRight: 5,
marginTop: 3,
}} />
<div className='aiUseNameCheckSmall'></div>
</div>
<div>
<span className='aiUseNameChecStatus'
style={{
background: '#39B551'
}}
></span>
</div>
</div>
<div className='aiUseNameCheckSmallText'>10</div>
<div style={{
marginTop: 10,
paddingLeft: 20,
}}>
<div className='aiUseNameCheckSmallTextBox'>
建议:请在项目名称末尾添加'软件''系统''平台'
</div>
</div>
</div>
<div className='aiUseNameCheckLineSmall'></div>
</div>
</div>
</div>
<div className='aiUseNameQusetionBox'>
<div style={{
@ -3096,6 +3551,371 @@ export default function Head() {
</div>
</div>
</div>
<div style={{
width: '100vw',
height: '100vh',
position: 'fixed',
top: 0,
left: 0,
background: 'rgba(0,0,0,0.5)',
display: aiUseMatrixModal ? 'block' : 'none',
zIndex: 101,
}}
key={matrixKey}
>
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '100vw',
height: '100vh',
}}>
<div
style={{
width: '1000px',
height: '700px',
background: '#FFFAF3',
overflowY: 'auto',
borderRadius: 10,
// backgroundImage: `url(${aiUseNameBg})`,
// backgroundSize: '100% 400px',
backgroundRepeat: 'no-repeat',
position: 'relative',
}}>
<div style={{
position: 'sticky',
top: 20,
right: 20,
cursor: 'pointer',
float: 'right',
zIndex: 10,
}}
title='关闭'
onClick={() => {
setAiUseMatrixModal(false)
initAiMatrixModal()
}}
>
<img src={closeImg} width={18} height={18} alt="" />
</div>
<div style={{
width: '100%',
height: '500px',
backgroundImage: `url(${aiUseMatrixBg})`,
backgroundSize: '100% 400px',
backgroundRepeat: 'no-repeat',
paddingTop: 200,
boxSizing: 'border-box',
}}>
<div style={
{
padding: '0 100px',
boxSizing: 'border-box',
// marginTop: 200,
}
}>
<div style={{
width: '100%',
height: 270,
background: 'white',
display: 'flex',
justifyContent: 'center',
flexDirection: 'column',
// alignItems: 'center',
borderRadius: 10,
padding: '0 50px',
boxSizing: 'border-box',
}}>
<div style={{
display: 'flex',
alignItems: 'center',
}}>
<img src={con} alt="" width={18} height={18} />
<div style={{
color: '#42464B',
marginLeft: 5,
}}>
</div>
</div>
<TextArea style={{
// width: '500px',
height: 87,
fontSize: 18,
border: '2px solid #FFDAB6',
borderRadius: 8,
// outline: 'none',
// padding: '0 20px',
boxSizing: 'border-box',
transition: 'border-color 0.2s',
resize: 'none',
marginTop: 20,
}}
value={aiUseText}
onChange={(e) => {
setAiUseText(e.target.value)
}}
placeholder='例我们是一家做AI客服的SaaS公司主营智能工单与知识库'
allowClear
></TextArea>
<div style={{
display: 'flex',
justifyContent: 'flex-end',
marginTop: 20,
}}>
<Button style={{
// width: 150,
height: 50,
background: '#FC971C',
color: '#fff',
fontSize: 18,
borderRadius: 10,
// marginLeft: 20,
}}
onClick={() => {
if (aiUseText) {
setTimeout(() => {
setUseShow(true)
message.success('生成成功')
setTimeout(() => {
useShowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
}, 10);
}, 3000)
} else {
message.error('请输入公司与产品领域')
}
}}
>
<img src={searchImg} alt="" width={18} height={20} /></Button>
</div>
</div>
</div>
</div>
<div style={
{
padding: '0 100px 20px 100px',
boxSizing: 'border-box',
// marginTop: 200,
}
}>
<div style={{
height: 20,
marginTop: -20,
}}
ref={useShowRef}
>
</div>
<div className='aiUseNameResultBox'
style={{
// display: useShow ? 'block' : 'none'
}}
>
<div style={{
display: 'flex',
}}>
<img src={boxImg} alt="" height={18} style={{
marginTop: 5,
marginRight: 5,
}} />
<div style={{
fontSize: 18,
fontWeight: 700,
}}>
</div>
</div>
<div style={{
marginTop:10
}}>
<div className='aiUseMatrixBigBox'>
<div className='aiUseMatrixSmallBoxItem'>
</div>
<div className='aiUseMatrixSmallBoxItem'>
</div>
<div className='aiUseMatrixSmallBoxItem'>
</div>
<div className='aiUseMatrixSmallBoxItem'>
</div>
</div>
</div>
</div>
<div className='aiUseNameQusetionBox'>
<div style={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
}}>
<div style={{
fontSize: 18,
display: 'flex',
alignItems: 'center',
fontWeight: 700,
}}>
<img src={qusetionImg} width={15} height={16} alt="" style={{
marginTop: 5,
marginRight: 5,
}} />
</div>
<div style={{
color: '#929292',
}}>
使
</div>
</div>
{
// 循环aiNameArray这个数组
aiMatrixArray.map((item) => {
return (
<div className='aiUseNameQusetion' key={item.key}>
<div style={{
// background:'red',
cursor: 'pointer'
}}
onClick={() => {
// 查询clostNameExampleArray这个数组中是否有item.key 如果有的话从这个数组去除 如果没有的话加入这个数组
setClostMatrixExampleArray(prev => {
if (prev.includes(item.key)) {
// 已存在则移除
return prev.filter(exampleArrayItem => exampleArrayItem !== item.key);
} else {
// 不存在则添加
return [...prev, item.key];
}
});
}}
>
<div className='aiUseNameQusetionTop'>
<div style={{
display: 'flex',
alignItems: 'center',
}}>
<div className='aiUseNameQusetionLabel'>{item.name}</div>
<div className='aiUseNameQusetionContent'>{item.title}</div>
</div>
<div style={{
color: '#A9A9A9'
}}>
{
clostMatrixExampleArray.includes(item.key) ?
<DownOutlined /> : <UpOutlined />
}
</div>
</div>
<div className='aiUseNameQusetionCen'>{item.text}</div>
</div>
<div style={{
display: clostMatrixExampleArray.includes(item.key) ? 'none' : 'unset',
}}>
<div className='aiUseNameQusetionBot'>
<div></div>
{
item.example.map((exampleItem, index) => {
return (
<div className='aiUseNameQusetionItem' key={index}>
<div className='aiUseNameQusetionDian'>
</div>
<div className='aiUseNameQusetionIcon' style={{
display: exampleItem.icon ? 'unset' : 'none',
}} >
<img
src={
exampleItem.icon == 'yes' ?
yesImg :
exampleItem.icon == 'no' ?
noImg :
exampleItem.icon == 'tip' ?
tipImg :
exampleItem.icon == 'lamp' ?
lampImg :
''
} width={18} height={18} alt="" />
</div>
<div className='aiUseNameQusetionTitle'>
{exampleItem.title}
</div>
<div className='aiUseNameQusetionText' style={{
display: exampleItem.text ? 'unset' : 'none',
color: exampleItem.icon == 'yes' ? '#51CF66' :
exampleItem.icon == 'no' ? '#E02D2D' :
exampleItem.icon == 'tip' ? '#ffae00ff' : '',
}}>
{`${exampleItem.text}`}
</div>
</div>
)
})
}
</div>
</div>
</div>
)
})
}
</div>
</div>
</div>
</div>
</div>
<Spin tip="正在提交..." spinning={loading} fullscreen />
{contextHolder}
{modalHolder}

View File

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

View File

@ -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}`)

View File

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

BIN
src/static/aiUse/box.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/static/aiUse/green.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
src/static/aiUse/res.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
src/static/aiUse/resc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/static/aiUse/right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/static/aiUse/rightw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB