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

View File

@ -585,7 +585,8 @@
padding: 5px 15px;
border-radius: 5px;
}
.aiUseNameCheckLine{
.aiUseNameCheckLine {
width: 100%;
height: 1px;
background-color: #E9E9E9;
@ -594,44 +595,100 @@
}
.aiUseNameCheckLineSmall{
width: 100%;
.aiUseNameCheckLineSmall {
width: 100%;
height: 1px;
background-color: #E9E9E9;
margin-top: 20px;
margin-bottom: 20px;
}
.aiUseNameCheckSmall{
.aiUseNameCheckSmall {
font-size: 18px;
}
.aiUseNameCheckSmallText{
.aiUseNameCheckSmallText {
font-size: 14px;
color:#727A85;
color: #727A85;
margin-top: 10px;
padding-left: 20px;
}
.aiUseNameCheckSmallTextBox{
.aiUseNameCheckSmallTextBox {
font-size: 14px;
background-color: #fae3c4;
color:#e48602;
color: #e48602;
padding: 5px 10px;
box-sizing: border-box;
border-left: 5px solid #e48602;
max-width: 100%;
}
.aiUseMatrixBigBox{
background-color: skyblue;
.aiUseMatrixBigBox {
/* background-color: skyblue; */
display: flex;
flex-wrap: wrap;
}
.aiUseMatrixSmallBoxItem{
.aiUseMatrixSmallBoxItem {
margin-left: 10px;
margin-top: 10px;
width: 240px;
height: 300px;
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 })
// //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 test1 = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/q4ddb993?content=${name}`)
export const getAiUseMatrix = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/qf3a3c8c?content=${name}`)
export const getAiUseName = (name:any) => onLineRequest.get(`operator-plugin/app/query/sqlrelease/q4ddb993?content=${name}`)