|
@@ -1,9 +1,9 @@
|
|
|
'use client'
|
|
|
-import React, { useCallback, useEffect, useState } from 'react'
|
|
|
+import React, { useEffect, useState } from 'react'
|
|
|
import { RiAddLine, RiCloseLine, RiRefreshLine, RiSearchLine } from '@remixicon/react'
|
|
|
import Modal from '@/app/components/base/modal'
|
|
|
import Button from '@/app/components/base/button'
|
|
|
-import { delCorpus, fetchIntentType } from '@/service/common'
|
|
|
+import { addIntentType, delCorpus, editIntentType, fetchIntentType } from '@/service/common'
|
|
|
import 'react-multi-email/dist/style.css'
|
|
|
import Input from '@/app/components/base/input'
|
|
|
import useSWR from 'swr'
|
|
@@ -21,7 +21,7 @@ const TypeModal = ({
|
|
|
const [query, setQuery] = useState<any>({})
|
|
|
const { data, mutate }: any = useSWR(
|
|
|
{
|
|
|
- url: '/xxx',
|
|
|
+ url: '/intentions/types',
|
|
|
params: {
|
|
|
page: page + 1,
|
|
|
limit,
|
|
@@ -32,57 +32,65 @@ const TypeModal = ({
|
|
|
)
|
|
|
const list: any = data?.data || []
|
|
|
const total = data?.total || 0
|
|
|
+ const [refresh, setRefresh] = useState<boolean>(false)
|
|
|
const handleSearch = (reset = false) => {
|
|
|
- if (reset)
|
|
|
- setIntentType('')
|
|
|
-
|
|
|
+ setRefresh(true)
|
|
|
+ setPage(0)
|
|
|
const params: any = {}
|
|
|
- if (intentType)
|
|
|
- params.intentType = intentType
|
|
|
+ if (reset) {
|
|
|
+ setIntentType('')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (intentType)
|
|
|
+ params.search = intentType
|
|
|
+ }
|
|
|
setQuery(params)
|
|
|
- setPage(0)
|
|
|
+ mutate()
|
|
|
+ setRefresh(false)
|
|
|
}
|
|
|
useEffect(() => {
|
|
|
- mutate()
|
|
|
+ if (!refresh)
|
|
|
+ mutate()
|
|
|
}, [page, limit])
|
|
|
const [showConfirmDelete, setShowConfirmDelete] = useState(false)
|
|
|
const [row, setRow] = useState<any>({})
|
|
|
const handleDel = async () => {
|
|
|
try {
|
|
|
await delCorpus({
|
|
|
- url: `/tags/${row.id}`,
|
|
|
+ url: `/intentions/types/${row.id}`,
|
|
|
body: {},
|
|
|
})
|
|
|
setShowConfirmDelete(false)
|
|
|
+ handleSearch(false)
|
|
|
}
|
|
|
catch (e) { }
|
|
|
}
|
|
|
const [showDetail, setShowDetail] = useState(false)
|
|
|
const [mode, setMode] = useState<any>('add')
|
|
|
- const [editIntentType, setEditIntentType] = useState('')
|
|
|
- const handleSave = useCallback(async () => {
|
|
|
- // try {
|
|
|
- // let res
|
|
|
- // if (transfer.mode === 'add') {
|
|
|
- // res = await addCorpus({
|
|
|
- // url: '/xxx',
|
|
|
- // body: { name, type: 'knowledge_category' },
|
|
|
- // })
|
|
|
- // }
|
|
|
- // else {
|
|
|
- // res = await editCorpus({
|
|
|
- // url: '/xxx',
|
|
|
- // body: { name },
|
|
|
- // })
|
|
|
- // }
|
|
|
- // const { id }: any = res
|
|
|
- // if (id) {
|
|
|
- // onCancel()
|
|
|
- // onSend()
|
|
|
- // }
|
|
|
- // }
|
|
|
- // catch (e) { }
|
|
|
- }, [mode, editIntentType, onCancel, onSend])
|
|
|
+ const [editIntentTypeName, setEditIntentTypeName] = useState('')
|
|
|
+ const handleSave = async () => {
|
|
|
+ try {
|
|
|
+ let res
|
|
|
+ if (mode === 'add') {
|
|
|
+ res = await addIntentType({
|
|
|
+ url: '/intentions/types',
|
|
|
+ body: { name: editIntentTypeName },
|
|
|
+ })
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ res = await editIntentType({
|
|
|
+ url: `/intentions/types/${row.id}`,
|
|
|
+ body: { name: editIntentTypeName },
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const { id }: any = res
|
|
|
+ if (id) {
|
|
|
+ setShowDetail(false)
|
|
|
+ handleSearch(false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (e) { }
|
|
|
+ }
|
|
|
return (
|
|
|
<div>
|
|
|
<Modal overflowVisible isShow onClose={() => { }} className="p-[24px 32px] w-[800px] max-w-[800px]">
|
|
@@ -120,7 +128,7 @@ const TypeModal = ({
|
|
|
<Button variant='primary' className={cn('shrink-0')}
|
|
|
onClick={() => {
|
|
|
setMode('add')
|
|
|
- setEditIntentType('')
|
|
|
+ setEditIntentTypeName('')
|
|
|
setShowDetail(true)
|
|
|
}}>
|
|
|
<RiAddLine className='mr-1 h-4 w-4' />
|
|
@@ -145,16 +153,17 @@ const TypeModal = ({
|
|
|
className={'h-8 border-b border-divider-subtle hover:bg-background-default-hover'}
|
|
|
>
|
|
|
<td>{item.name}</td>
|
|
|
- <td>4</td>
|
|
|
+ <td>{item.intention_count}</td>
|
|
|
<td className="flex justify-center gap-2">
|
|
|
<Button variant='ghost-accent' size='small' className={cn('shrink-0')} onClick={() => {
|
|
|
setMode('edit')
|
|
|
- setEditIntentType(item.name)
|
|
|
+ setRow(item)
|
|
|
+ setEditIntentTypeName(item.name)
|
|
|
setShowDetail(true)
|
|
|
}}>
|
|
|
编辑
|
|
|
</Button>
|
|
|
- <Button variant='ghost' size='small' className={cn('shrink-0 text-red-600')} onClick={() => {
|
|
|
+ <Button variant='ghost' size='small' className={cn('shrink-0 text-red-600')} disabled={item.intention_count > 0} onClick={() => {
|
|
|
setRow(item)
|
|
|
setShowConfirmDelete(true)
|
|
|
}}>
|
|
@@ -203,8 +212,8 @@ const TypeModal = ({
|
|
|
意图类型
|
|
|
</div>
|
|
|
<Input
|
|
|
- value={editIntentType}
|
|
|
- onChange={e => setEditIntentType(e.target.value)}
|
|
|
+ value={editIntentTypeName}
|
|
|
+ onChange={e => setEditIntentTypeName(e.target.value)}
|
|
|
className='h-9'
|
|
|
placeholder='请输入意图类型'
|
|
|
/>
|
|
@@ -213,7 +222,7 @@ const TypeModal = ({
|
|
|
tabIndex={0}
|
|
|
className='w-full'
|
|
|
onClick={handleSave}
|
|
|
- disabled={!editIntentType.length}
|
|
|
+ disabled={!editIntentTypeName.length}
|
|
|
variant='primary'
|
|
|
>
|
|
|
保存
|