提交 2b798ac2 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 95c96252
......@@ -10,7 +10,7 @@
"dependencies": {
"@ant-design/icons": "^5.6.1",
"@fortaine/fetch-event-source": "^3.0.6",
"@tanstack/react-query": "^5.67.1",
"@tanstack/react-query": "^5.69.0",
"@tanstack/react-query-devtools": "^5.69.0",
"antd": "^5.24.4",
"axios": "^1.8.3",
......
......@@ -12,10 +12,10 @@
"dependencies": {
"@ant-design/icons": "^5.6.1",
"@fortaine/fetch-event-source": "^3.0.6",
"@tanstack/react-query": "^5.67.1",
"@tanstack/react-query": "^5.69.0",
"@tanstack/react-query-devtools": "^5.69.0",
"antd": "^5.24.4",
"axios": "^1.8.3",
"axios": "^1.8.4",
"blueimp-md5": "^2.19.0",
"lodash-es": "^4.17.21",
"lucide-react": "^0.477.0",
......
......@@ -712,7 +712,7 @@ export function getMyList(params?: Partial<{ page: number; 'per-page': number }>
// },
// },
// })
return httpRequest.get('/api/bi/v1/data/my/list', { params })
return httpRequest.get('/api/resource/bi/v1/data/my/list', { params })
}
// 查看字段详情
......@@ -1133,7 +1133,7 @@ export function getMyField() {
// },
// ],
// })
return httpRequest.get('/api/bi/v1/data/my/field-detail')
return httpRequest.get('/api/resource/bi/v1/data/my/field-detail')
}
// 我的数据集列表
......@@ -1171,5 +1171,5 @@ export function getChartList(params?: Partial<{ page: number; 'per-page': number
],
},
})
return httpRequest.get('/api/bi/v1/data/my/list', { params })
return httpRequest.get('/api/resource/bi/v1/data/my/list', { params })
}
......@@ -31,7 +31,7 @@ const AppList = forwardRef<AppListRef, AppListProps>(
queryFn: async () => {
return fetchApi ? await fetchApi(queryParams) : { list: dataSource || [], total: dataSource?.length || 0 }
},
initialData: (): any => {
placeholderData: (): any => {
return { list: dataSource || [], total: dataSource?.length || 0 }
},
enabled: !!fetchApi,
......
......@@ -20,12 +20,7 @@ export const MessageItem = ({ message }: { message: AIMessage }) => {
}
export default function AIChat() {
const [collapsed, setCollapsed] = useState(true)
const toggleCollapsed = () => {
setCollapsed(!collapsed)
}
const { ai, setAI, options, post, messages, isLoading } = useAIStore()
const { ai, setAI, options, post, messages, isLoading, collapsed, toggleCollapsed } = useAIStore()
const [content, setContent] = useState('')
......
import { lazy, ReactNode } from 'react'
import { Card, Flex } from 'antd'
import AIChat from '@/components/ai/AIChat'
import DataRender from './DataRender'
import { useDataQuery } from '@/hooks/useQuery'
const ViewDataFiledButtonModal = lazy(() => import('./ViewDataFiledButtonModal'))
const ViewDataFiledButtonModal = lazy(() => import('./ViewDataFieldButtonModal'))
export default function DataWrap({
hasAI = true,
title,
headerRender,
buttons,
......@@ -17,7 +15,6 @@ export default function DataWrap({
buttons?: ReactNode
headerRender?: (data: any) => ReactNode
empty?: ReactNode
hasAI?: boolean
}) {
const { data, isPending } = useDataQuery()
......@@ -53,7 +50,6 @@ export default function DataWrap({
</>
)}
</Card>
{hasAI && <AIChat />}
</Flex>
)
}
......@@ -19,7 +19,7 @@ export default function ViewDataButtonModal({ data }: { data: any }) {
const workbook = read(res.data)
const sheetName = workbook.SheetNames[0]
const worksheet = workbook.Sheets[sheetName]
const jsonData = utils.sheet_to_json(worksheet)
const jsonData = utils.sheet_to_json(worksheet, { defval: '' })
setDataset(jsonData)
} catch (error) {
console.error(error)
......
......@@ -13,6 +13,7 @@ import {
} from 'lucide-react'
import { Menu, MenuProps } from 'antd'
import './DataLayout.scss'
import AIChat from '../ai/AIChat'
type MyMenuItem = {
name: string
......@@ -200,6 +201,7 @@ export default function DataLayout() {
<div className="data-layout-container">
<Outlet />
</div>
<AIChat></AIChat>
</div>
)
}
......@@ -3,6 +3,8 @@ import { useQuery } from '@tanstack/react-query'
import { getUser, getMapList, getMyList, getMyField } from '@/api/base'
import { useUserStore } from '@/stores/user'
import { useMapStore } from '@/stores/map'
import axios from 'axios'
import { read, utils } from 'xlsx'
export function useUserQuery() {
const { setUser } = useUserStore()
......@@ -40,26 +42,32 @@ export function useDataQuery() {
return getMyList({ page: 1, 'per-page': 1000 })
},
select: (res) => res.data,
initialData: (): any => {
placeholderData: (): any => {
return { data: { total: 0, list: [], title: [] } }
},
})
// useEffect(() => {
// if (query.data) {
// localStorage.setItem('dataset', JSON.stringify(query.data))
// }
// }, [query.data])
useEffect(() => {
if (query.data?.info) {
const file = query.data.info.source
axios(file.url, { responseType: 'arraybuffer' }).then((res) => {
const workbook = read(res.data)
const sheetName = workbook.SheetNames[0]
const worksheet = workbook.Sheets[sheetName]
const jsonData = utils.sheet_to_json(worksheet, { defval: '' })
localStorage.setItem('dataset', JSON.stringify(jsonData))
})
}
}, [query.data])
return query
}
// 查看字段详情
export function useDataFieldQuery() {
const query = useQuery({
queryKey: ['dataFiled'],
queryFn: getMyField,
select: (res) => res.data,
initialData: () => {
placeholderData: (): any => {
return { data: [] }
},
})
......
......@@ -6,7 +6,13 @@ import { ConfigProvider } from 'antd'
import zhCN from 'antd/locale/zh_CN'
import App from './App.tsx'
// import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
const queryClient = new QueryClient()
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 1000 * 60 * 10,
},
},
})
const antdTheme = {
cssVar: true,
......
......@@ -12,7 +12,7 @@ export default function ButtonModal() {
const checked = Form.useWatch('checked', form)
const [step, setStep] = useState<number>(null)
const [step, setStep] = useState<number>(-1)
const steps = [
{
......
......@@ -3,12 +3,12 @@ import type { CreateDatasetParams } from './types'
// 创建内置数据集
export function createDataset(data: CreateDatasetParams) {
return httpRequest.post('/api/bi/v1/data/built-in/create', data)
return httpRequest.post('/api/resource/bi/v1/data/built-in/create', data)
}
// 删除内置数据集
export function deleteDataset(data: { id: string }) {
return httpRequest.post('/api/bi/v1/data/built-in/delete', data)
return httpRequest.post('/api/resource/bi/v1/data/built-in/delete', data)
}
// 内置数据集列表
......@@ -23,5 +23,5 @@ export function getDatasetList(
'per-page': number
}>
) {
return httpRequest.get('/api/bi/v1/data/built-in/list', { params })
return httpRequest.get('/api/resource/bi/v1/data/built-in/list', { params })
}
......@@ -12,10 +12,10 @@ export function getDatasetList(
'per-page': number
}>
) {
return httpRequest.get('/api/bi/v1/data/built-in/list', { params })
return httpRequest.get('/api/resource/bi/v1/data/built-in/list', { params })
}
// 复制数据集
export function copyDataset(data: { id: string; name: string; force: string }) {
return httpRequest.post('/api/bi/v1/data/my/copy-built-in', data)
return httpRequest.post('/api/resource/bi/v1/data/my/copy-built-in', data)
}
......@@ -34,7 +34,6 @@ export default function DataWriteMy() {
return (
<DataWrap
title="我的数据集"
hasAI={false}
headerRender={(data) => (
<Flex justify="space-between" align="middle" style={{ marginBottom: '20px' }}>
<h4>数据集名称:{data.info.name}</h4>
......
......@@ -2,5 +2,5 @@ import httpRequest from '@/utils/axios'
// 导入我的数据集
export function importDataset(data: { name: string; file: string }) {
return httpRequest.post('/api/bi/v1/data/my/import', data)
return httpRequest.post('/api/resource/bi/v1/data/my/import', data)
}
......@@ -33,11 +33,9 @@ export default function DataWriteUpload() {
const workbook = read(data)
const sheetName = workbook.SheetNames[0]
const worksheet = workbook.Sheets[sheetName]
const jsonData = utils.sheet_to_json(worksheet)
const jsonData = utils.sheet_to_json(worksheet, { defval: '' })
setDataset(jsonData)
localStorage.setItem('dataset', JSON.stringify(jsonData))
return false
},
}
......
......@@ -6,7 +6,9 @@ interface AIState {
options: AIOption[]
messages: AIMessage[]
isLoading: boolean
collapsed: boolean
setAI: (ai: string) => void
toggleCollapsed: () => void
post: (data: AIData) => Promise<void>
}
......@@ -15,16 +17,22 @@ export const useAIStore = create<AIState>((set, get) => ({
options: AI_OPTIONS,
messages: [],
isLoading: false,
collapsed: false,
setAI: (ai) => {
localStorage.setItem('ai', ai)
set({ ai })
},
toggleCollapsed: () => {
set((state) => ({ collapsed: !state.collapsed }))
},
post: async (data) => {
const { ai, messages } = get()
set({ isLoading: true, messages: [...messages, ...data.messages.filter((item) => item.role !== 'system')] })
set({
collapsed: true,
isLoading: true,
messages: [...messages, ...data.messages.filter((item) => item.role !== 'system')],
})
try {
await aiService.post(ai, data, {
......
......@@ -10,12 +10,12 @@ export default defineConfig({
open: true,
host: 'dev.ezijing.com',
proxy: {
'/api/bi': {
target: 'https://saas-lab.ezijing.com',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api\/bi/, '/api/resource/bi'),
},
// '/api/bi': 'https://saas-lab.ezijing.com/api/resource/bi',
// '/api/resource/bi': {
// target: 'https://saas-lab.ezijing.com',
// changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api\/bi/, '/api/resource/bi'),
// },
// '/api/resource/bi': 'https://saas-lab.ezijing.com/api/resource/bi',
'/api': 'https://saas-lab.ezijing.com',
},
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论