This commit is contained in:
lyp 2025-09-01 16:17:34 +08:00
parent a8b04abdb1
commit 1fb2a8251c
3 changed files with 279 additions and 96 deletions

View File

@ -138,7 +138,7 @@ import greenImg from '../../static/aiUse/green.png'
// }, // },
// ]; // ];
import { DownOutlined, UserOutlined, QuestionCircleOutlined, BellOutlined, KeyOutlined, LogoutOutlined, GiftOutlined, AccountBookOutlined, ContainerOutlined, MenuFoldOutlined, UsergroupAddOutlined, TableOutlined, UpOutlined } from "@ant-design/icons"; import { DownOutlined, UserOutlined, QuestionCircleOutlined, BellOutlined, KeyOutlined, LogoutOutlined, GiftOutlined, AccountBookOutlined, ContainerOutlined, MenuFoldOutlined, UsergroupAddOutlined, TableOutlined, UpOutlined, SearchOutlined } from "@ant-design/icons";
import { import {
useContext, useEffect, useState, useContext, useEffect, useState,
@ -149,7 +149,7 @@ import {
// post, // post,
getUseUrl getUseUrl
} from "../../util/AjaxUtils.ts"; } from "../../util/AjaxUtils.ts";
import { getLoginflag, test, test1 } from '../../request/api' import { getLoginflag, getAiUseName, getAiUseMatrix } from '../../request/api'
import { GlobalContext, GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts"; import { GlobalContext, GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
import UserEdit from "../../components/user/UserEdit.tsx"; import UserEdit from "../../components/user/UserEdit.tsx";
@ -178,11 +178,12 @@ import aiUseNameBg from '../../static/aiUse/useNameback.png'
import aiUseMatrixBg from '../../static/aiUse/useMatrixback.png' import aiUseMatrixBg from '../../static/aiUse/useMatrixback.png'
import con from '../../static/aiUse/contest.png' import con from '../../static/aiUse/contest.png'
import closeImg from '../../static/aiUse/close.png' import closeImg from '../../static/aiUse/close.png'
import searchImg from '../../static/aiUse/search.png' // import searchImg from '../../static/aiUse/search.png'
import boxImg from '../../static/aiUse/box.png' import boxImg from '../../static/aiUse/box.png'
const { TextArea } = Input; const { TextArea } = Input;
export default function Head() { export default function Head() {
const aiNameArray = [ const aiNameArray = [
// { // {
// key:'', // key:'',
@ -1800,19 +1801,23 @@ export default function Head() {
const [aiUseNameModal, setAiUseNameModal] = useState(false) const [aiUseNameModal, setAiUseNameModal] = useState(false)
const [componentKey, setComponentKey] = useState(1); // 控制组件重新加载的 key const [componentKey, setComponentKey] = useState(1); // 控制组件重新加载的 key
const [aiUseName, setAiUseName] = useState('') // 软件名称 const [aiUseName, setAiUseName] = useState('') // 软件名称
const [aiUseNameResultArray, setAiUseNameResultArray] = useState([]) // 检查结果数组
const [aiUseNameResultStatus, setAiUseNameResultStatus] = useState('') // 检查结果
const [aiUseNameResultNames, setAiUseNameResultNames] = useState([]) // 推荐名字数组
const [clostNameExampleArray, setClostNameExampleArray] = useState<any[]>([]) const [clostNameExampleArray, setClostNameExampleArray] = useState<any[]>([])
// 初始化Ai预审软件名称工具弹窗 // 初始化Ai预审软件名称工具弹窗
const initAiUseNameModal = () => { const initAiUseNameModal = () => {
setClostNameExampleArray([]) setClostNameExampleArray([])
setComponentKey(1) setComponentKey(1)
setAiUseName('') setAiUseName('')
setUseShow(false) // setUseShow(false)
setAiUseNameResultArray([])
setAiUseNameResultStatus('')
setAiUseNameResultNames([])
} }
const [aiUseNameSpin, setAiUseNameSpin] = useState(false) const [aiUseNameSpin, setAiUseNameSpin] = useState(false)
const [useShow, setUseShow] = useState(false) // const [useShow, setUseShow] = useState(false)
const [aiUseResultName, setAiUseResultName] = useState('') // 软件名称 const [aiUseResultName, setAiUseResultName] = useState('') // 软件名称
@ -1868,12 +1873,15 @@ export default function Head() {
const [matrixKey, setMatrixKey] = useState(2); // 控制组件重新加载的 key const [matrixKey, setMatrixKey] = useState(2); // 控制组件重新加载的 key
const [aiUseText, setAiUseText] = useState('') // 软件名称 const [aiUseText, setAiUseText] = useState('') // 软件名称
const [clostMatrixExampleArray, setClostMatrixExampleArray] = useState<any[]>([]) const [clostMatrixExampleArray, setClostMatrixExampleArray] = useState<any[]>([])
const [aiUseMatrixSpin, setAiUseMatrixSpin] = useState(false)
const [aiUseMatrixResultArray, setAiUseMatrixResultArray] = useState([])
// 初始化AI软著矩阵规划工具弹窗 // 初始化AI软著矩阵规划工具弹窗
const initAiMatrixModal = () => { const initAiMatrixModal = () => {
setClostMatrixExampleArray([]) setClostMatrixExampleArray([])
setMatrixKey(2) setMatrixKey(2)
setAiUseText('') setAiUseText('')
setUseShow(false) setAiUseMatrixResultArray([])
// setUseShow(false)
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
@ -3123,6 +3131,8 @@ export default function Head() {
width: '100vw', width: '100vw',
height: '100vh', height: '100vh',
}}> }}>
<div <div
style={{ style={{
width: '1000px', width: '1000px',
@ -3146,8 +3156,13 @@ export default function Head() {
}} }}
title='关闭' title='关闭'
onClick={() => { onClick={() => {
if (aiUseNameSpin) {
message.error('正在检测中,请勿关闭')
} else {
setAiUseNameModal(false) setAiUseNameModal(false)
initAiUseNameModal() initAiUseNameModal()
}
}} }}
> >
@ -3196,31 +3211,50 @@ export default function Head() {
}} }}
placeholder='请输入您的软件名称' placeholder='请输入您的软件名称'
allowClear allowClear
disabled={aiUseNameSpin}
></Input> ></Input>
<Button style={{ <Button style={{
width: 150, width: 150,
height: 50, height: 50,
background: '#FC971C', background: aiUseNameSpin ? 'rgba(252,151,28,0.5)' : '#FC971C',
color: '#fff', color: '#fff',
fontSize: 18, fontSize: 18,
borderRadius: 10, borderRadius: 10,
marginLeft: 20, marginLeft: 20,
}} }}
icon={<SearchOutlined />}
loading={aiUseNameSpin}
disabled={aiUseNameSpin}
onClick={async () => { onClick={async () => {
if (aiUseName) { if (aiUseName) {
setTimeout(() => {
setUseShow(true)
message.success('生成成功')
setAiUseResultName(aiUseName)
}, 3000)
try { try {
const res = await test1(aiUseName) setAiUseNameSpin(true)
const res = await getAiUseName(aiUseName)
console.log(res); console.log(res);
if (res.data.items) {
message.success('检查完成')
setAiUseResultName(aiUseName)
// console.log(res.data.items);
setAiUseNameResultArray(res.data.items)
// console.log(res.data.result.status);
setAiUseNameResultStatus(res.data.result.status)
// console.log(res.data.result.names);
setAiUseNameResultNames(res.data.result.names)
useShowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
} else {
message.error(res.data)
}
setAiUseNameSpin(false)
// setUseShow(true)
} }
catch (error: any) { catch (error: any) {
setAiUseNameSpin(false)
if (error.response) { if (error.response) {
const data = error.response.data; const data = error.response.data;
messageApi.open({ messageApi.open({
@ -3239,7 +3273,9 @@ export default function Head() {
}} }}
> >
<img src={searchImg} alt="" width={18} height={20} /></Button>
{aiUseNameSpin ? '检查中...' : '开始检查'}
</Button>
</div> </div>
@ -3252,17 +3288,18 @@ export default function Head() {
// marginTop: 200, // marginTop: 200,
} }
}> }>
<div style={{ <div style={{
height: 20, height: 20,
marginTop: -20, marginTop: -20,
}} }}
// ref={useShowRef} ref={useShowRef}
> >
</div> </div>
<div style={{ <div style={{
display: useShow ? 'block' : 'none' display: aiUseNameResultArray.length > 0 ? 'block' : 'none'
}}> }}>
@ -3313,9 +3350,9 @@ export default function Head() {
}}></span> }}></span>
<span className='aiUseNameChecStatus' <span className='aiUseNameChecStatus'
style={{ style={{
background: '#39B551' background: aiUseNameResultStatus === '通过' ? '#39B551' : '#FF4D4F'
}} }}
></span> >{aiUseNameResultStatus}</span>
</div> </div>
</div> </div>
@ -3337,12 +3374,18 @@ export default function Head() {
</div> </div>
</div> </div>
{
aiUseNameResultNames.map((item: any, index: number) => {
return (
<div className='aiUseNameCheckName' style={{ <div className='aiUseNameCheckName' style={{
marginTop: 10, marginTop: 10,
}}> }} key={index}>
{item}
</div> </div>
)
})
}
</div> </div>
</div> </div>
@ -3375,6 +3418,10 @@ export default function Head() {
marginTop: 20, marginTop: 20,
}}> }}>
{
aiUseNameResultArray.map((item: any, index: number) => {
return (
<div key={index}>
<div> <div>
<div style={{ <div style={{
display: 'flex', display: 'flex',
@ -3389,30 +3436,41 @@ export default function Head() {
marginRight: 5, marginRight: 5,
marginTop: 3, marginTop: 3,
}} /> }} />
<div className='aiUseNameCheckSmall'></div> <div className='aiUseNameCheckSmall'>
{item.name}
</div>
</div> </div>
<div> <div>
<span className='aiUseNameChecStatus' <span className='aiUseNameChecStatus'
style={{ style={{
background: '#39B551' background: item.status === '通过' ? '#39B551' : '#FF4D4F'
}} }}
></span> >{item.status}</span>
</div> </div>
</div> </div>
<div className='aiUseNameCheckSmallText'>10</div> <div className='aiUseNameCheckSmallText'>{item.reason}</div>
<div style={{ <div style={{
marginTop: 10, marginTop: 10,
paddingLeft: 20, paddingLeft: 20,
}}> }}>
<div className='aiUseNameCheckSmallTextBox'> <div className='aiUseNameCheckSmallTextBox' style={{
建议:请在项目名称末尾添加'软件''系统''平台' display: item.status === '通过' ? 'none' : 'block'
}}>
:{item.suggestion}
</div> </div>
</div> </div>
</div> </div>
<div className='aiUseNameCheckLineSmall'></div> <div className='aiUseNameCheckLineSmall' style={{
display: index === aiUseNameResultArray.length - 1 ? 'none' : 'block'
}}></div>
</div>
)
})
}
</div> </div>
@ -3549,6 +3607,7 @@ export default function Head() {
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -3595,8 +3654,13 @@ export default function Head() {
}} }}
title='关闭' title='关闭'
onClick={() => { onClick={() => {
if (aiUseMatrixSpin) {
message.error('正在生成中,请勿关闭')
} else {
setAiUseMatrixModal(false) setAiUseMatrixModal(false)
initAiMatrixModal() initAiMatrixModal()
}
}} }}
> >
@ -3671,6 +3735,8 @@ export default function Head() {
}} }}
placeholder='例我们是一家做AI客服的SaaS公司主营智能工单与知识库' placeholder='例我们是一家做AI客服的SaaS公司主营智能工单与知识库'
allowClear allowClear
disabled={aiUseMatrixSpin}
></TextArea> ></TextArea>
<div style={{ <div style={{
display: 'flex', display: 'flex',
@ -3679,23 +3745,54 @@ export default function Head() {
}}> }}>
<Button style={{ <Button style={{
// width: 150, width: 166,
height: 50, height: 50,
background: '#FC971C', background: aiUseMatrixSpin ? 'rgba(252,151,28,0.5)' : '#FC971C',
color: '#fff', color: '#fff',
fontSize: 18, fontSize: 18,
borderRadius: 10, borderRadius: 10,
// marginLeft: 20, // marginLeft: 20,
}} }}
onClick={() => { icon={<SearchOutlined />}
loading={aiUseMatrixSpin}
disabled={aiUseMatrixSpin}
onClick={async () => {
if (aiUseText) { if (aiUseText) {
setTimeout(() => { // setTimeout(() => {
setUseShow(true) // // setUseShow(true)
// message.success('生成成功')
// setTimeout(() => {
// useShowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
// }, 10);
// }, 3000)
try {
setAiUseMatrixSpin(true)
const res = await getAiUseMatrix(aiUseText)
// console.log(res);
if (res.data.item) {
message.success('生成成功') message.success('生成成功')
setTimeout(() => { setAiUseMatrixResultArray(res.data.item)
useShowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' }); useShowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
}, 10); } else {
}, 3000) message.error(res.data)
}
setAiUseMatrixSpin(false)
// setUseShow(true)
}
catch (error: any) {
setAiUseMatrixSpin(false)
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 { } else {
message.error('请输入公司与产品领域') message.error('请输入公司与产品领域')
@ -3704,7 +3801,9 @@ export default function Head() {
}} }}
> >
<img src={searchImg} alt="" width={18} height={20} /></Button> {aiUseMatrixSpin ? '生成中...' : ' 生成矩阵材料'}
</Button>
</div> </div>
</div> </div>
@ -3729,7 +3828,7 @@ export default function Head() {
style={{ style={{
// display: useShow ? 'block' : 'none' display: aiUseMatrixResultArray.length > 0 ? 'block' : 'none'
}} }}
@ -3752,11 +3851,38 @@ export default function Head() {
</div> </div>
</div> </div>
<div style={{ <div style={{
marginTop:10 marginTop: 10
}}> }}>
<div className='aiUseMatrixBigBox'> <div className='aiUseMatrixBigBox'>
<div className='aiUseMatrixSmallBoxItem'> {
aiUseMatrixResultArray.map((item: any, Index) => {
return (
<div className='aiUseMatrixSmallBoxItem' key={Index}>
<div className='aiUseMatrixSmallBoxItemTitle' title='智驭新能BMS动态均衡控制系统'>{item.name}</div>
<div style={{
display: 'flex',
alignItems: 'center',
marginTop: 20,
}}>
<div className='aiUseMatrixSmallBoxItemDian'></div>
<div className='aiUseMatrixSmallBoxItemDianTitle'></div>
</div>
<div className='aiUseMatrixSmallBoxItemContent'>
{item.description}
</div>
</div>
)
})
}
{/* <div className='aiUseMatrixSmallBoxItem'>
</div> </div>
<div className='aiUseMatrixSmallBoxItem'> <div className='aiUseMatrixSmallBoxItem'>
@ -3764,10 +3890,7 @@ export default function Head() {
</div> </div>
<div className='aiUseMatrixSmallBoxItem'> <div className='aiUseMatrixSmallBoxItem'>
</div> </div> */}
<div className='aiUseMatrixSmallBoxItem'>
</div>
</div> </div>

View File

@ -585,7 +585,8 @@
padding: 5px 15px; padding: 5px 15px;
border-radius: 5px; border-radius: 5px;
} }
.aiUseNameCheckLine{
.aiUseNameCheckLine {
width: 100%; width: 100%;
height: 1px; height: 1px;
background-color: #E9E9E9; background-color: #E9E9E9;
@ -594,44 +595,100 @@
} }
.aiUseNameCheckLineSmall{
.aiUseNameCheckLineSmall {
width: 100%; width: 100%;
height: 1px; height: 1px;
background-color: #E9E9E9; background-color: #E9E9E9;
margin-top: 20px; margin-top: 20px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.aiUseNameCheckSmall{
.aiUseNameCheckSmall {
font-size: 18px; font-size: 18px;
} }
.aiUseNameCheckSmallText{
.aiUseNameCheckSmallText {
font-size: 14px; font-size: 14px;
color:#727A85; color: #727A85;
margin-top: 10px; margin-top: 10px;
padding-left: 20px; padding-left: 20px;
} }
.aiUseNameCheckSmallTextBox{
.aiUseNameCheckSmallTextBox {
font-size: 14px; font-size: 14px;
background-color: #fae3c4; background-color: #fae3c4;
color:#e48602; color: #e48602;
padding: 5px 10px; padding: 5px 10px;
box-sizing: border-box; box-sizing: border-box;
border-left: 5px solid #e48602; border-left: 5px solid #e48602;
max-width: 100%; max-width: 100%;
} }
.aiUseMatrixBigBox{
background-color: skyblue; .aiUseMatrixBigBox {
/* background-color: skyblue; */
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.aiUseMatrixSmallBoxItem{
.aiUseMatrixSmallBoxItem {
margin-left: 10px; margin-left: 10px;
margin-top: 10px; margin-top: 10px;
width: 240px; width: 240px;
height: 300px; height: 300px;
background-color: pink; background-color: rgb(255, 255, 255);
border-radius: 10px;
border: 1px solid rgb(240, 240, 240);
border-top: 5px solid #FFC573;
padding: 15px;
box-sizing: border-box;
}
/* .aiUseMatrixSmallBoxItemTop{
background-color: pink;
height: 200px;
} */
.aiUseMatrixSmallBoxItemTitle {
/* background-color: skyblue; */
width: 100%;
overflow: hidden;
font-size: 18px;
max-height: 48px;
display: -webkit-box; /* 弹性盒子模型 */
-webkit-line-clamp: 2; /* 最多显示10行根据字体大小和高度调整 */
-webkit-box-orient: vertical; /* 垂直排列 */
/* font-weight: 700; */
}
.aiUseMatrixSmallBoxItemDian {
width: 5px;
height: 5px;
background-color: #FFC573;
border-radius: 50%;
margin-right: 5px;
margin-top: 2px;
}
.aiUseMatrixSmallBoxItemDianTitle {
color: #FFC573;
}
.aiUseMatrixSmallBoxItemContent {
font-size: 14px;
color: #727A85;
margin-top: 10px;
height: 160px; /* 固定高度 */
overflow: hidden; /* 隐藏超出部分 */
/* background-color: skyblue; */
/* 新增多行文本溢出省略设置 */
display: -webkit-box; /* 弹性盒子模型 */
-webkit-line-clamp: 8; /* 最多显示10行根据字体大小和高度调整 */
-webkit-box-orient: vertical; /* 垂直排列 */
} }

View File

@ -39,7 +39,10 @@ export const updateInvoiceInfoByinvoiceRechargeId = (invoiceRechargeId: string,
// 获取套餐包使用详情 // 获取套餐包使用详情
export const getPackageDetail = (userId:string,packageOrderId:string,params:any) => request.get(`/operator-plugin/app/packageorderitem/listpagerelease/${userId}?packageOrderId=${packageOrderId}`, { params }) export const getPackageDetail = (userId:string,packageOrderId:string,params:any) => request.get(`/operator-plugin/app/packageorderitem/listpagerelease/${userId}?packageOrderId=${packageOrderId}`, { params })
// //ai分析矩阵
// export const getAiUseMatrix = (name:any) => request.get(`operator-plugin/app/query/sqlrelease/qf3a3c8c?content=${name}`)
// //ai分析系统名称
// export const getAiUseName = (name:any) => request.get(`operator-plugin/app/query/sqlrelease/q4ddb993?content=${name}`)
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -249,6 +252,6 @@ export const supplementTrademarkData = (params:any) => aiShopRequest.post(`/aish
// 线上测试----------------------------------------------------------------------------------------- // 线上测试-----------------------------------------------------------------------------------------
export const test = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/qf3a3c8c?content=${name}`) export const getAiUseMatrix = (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}`) export const getAiUseName = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/q4ddb993?content=${name}`)