| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 
							- 'use client'
 
- import List from './list'
 
- import React, { useEffect, useRef, useState } from 'react'
 
- import Input from '@/app/components/base/input'
 
- import cn from '@/utils/classnames'
 
- import { RiAddLine, RiPriceTagLine, RiRefreshLine, RiSearchLine } from '@remixicon/react'
 
- import Button from '@/app/components/base/button'
 
- import useSWR from 'swr'
 
- import { fetchIntent, fetchIntentType } from '@/service/common'
 
- import { SimpleSelect } from '@/app/components/base/select'
 
- import DetailModal from './detail-modal'
 
- import TypeModal from './type-modal'
 
- const CorpusIndex = () => {
 
-   const [page, setPage] = useState<number>(0)
 
-   const [limit, setLimit] = useState<number>(10)
 
-   const [intentName, setIntentName] = useState<string>('') // the input value
 
-   const [intentType, setIntentType] = useState<string>('') // the input value
 
-   const { data: dataOptionsIntentType, mutate: mutateOptionsIntentType }: any = useSWR(
 
-     {
 
-       url: '/intentions/types',
 
-       params: {
 
-         page: 1,
 
-         limit: 99999,
 
-       },
 
-     },
 
-     fetchIntentType,
 
-   )
 
-   const optionsIntentType: any = dataOptionsIntentType?.data.map((v: any) => ({ name: v.name, value: v.id })) || []
 
-   const query = useRef<any>({})
 
-   const [list, setList] = useState<any>([])
 
-   const [total, setTotal] = useState(0)
 
-   const handlePage = () => {
 
-     const params: any = {
 
-       page: page + 1,
 
-       limit,
 
-     }
 
-     if (query.current.intentType)
 
-       params.type_id = query.current.intentType
 
-     if (query.current.intentName)
 
-       params.name_search = query.current.intentName
 
-     fetchIntent({
 
-       url: '/intentions',
 
-       params,
 
-     }).then((res: any) => {
 
-       setList(res.data)
 
-       setTotal(res.total)
 
-     })
 
-   }
 
-   const [refresh, setRefresh] = useState<boolean>(false)
 
-   const handleSearch = (reset = false) => {
 
-     setRefresh(true)
 
-     setPage(0)
 
-     if (reset) {
 
-       setIntentName('')
 
-       setIntentType('')
 
-       query.current = {}
 
-     }
 
-     else {
 
-       query.current = {
 
-         intentType, intentName,
 
-       }
 
-     }
 
-     handlePage()
 
-     setRefresh(false)
 
-   }
 
-   useEffect(() => {
 
-     if (!refresh)
 
-       handlePage()
 
-   }, [page, limit])
 
-   const [detailModalVisible, setDetailModalVisible] = useState(false)
 
-   const [transfer, setTransfer] = useState<any>({
 
-     mode: 'add',
 
-     row: {},
 
-   })
 
-   const [showIntentTypeModalVisible, setShowIntentTypeModalVisible] = useState(false)
 
-   return (
 
-     <>
 
-       <div className='flex h-full w-full flex-col bg-background-default-subtle p-6'>
 
-         <div className="flex items-center gap-2">
 
-           <div className="flex shrink-0 items-center text-gray-500">
 
-             意图类型
 
-             <div className="ml-2 flex h-[32px]">
 
-               <SimpleSelect
 
-                 className="h-[32px] w-[200px]"
 
-                 defaultValue={intentType}
 
-                 onSelect={(i: any) => {
 
-                   setIntentType(i.value)
 
-                 }}
 
-                 items={optionsIntentType}
 
-                 allowSearch={false}
 
-                 placeholder="请选择意图类型"
 
-               />
 
-             </div>
 
-           </div>
 
-           <div className="flex shrink-0 items-center text-gray-500">
 
-             意图名称
 
-             <Input
 
-               className="ml-2"
 
-               showClearIcon
 
-               wrapperClassName='!w-[200px]'
 
-               value={intentName}
 
-               onChange={e => setIntentName(e.target.value)}
 
-               onClear={() => setIntentName('')}
 
-             />
 
-           </div>
 
-           <Button variant='primary' className={cn('ml-auto shrink-0')} onClick={() => {
 
-             handleSearch(false)
 
-           }}>
 
-             <RiSearchLine className='mr-1 h-4 w-4' />
 
-             搜索
 
-           </Button>
 
-           <Button variant='primary' className={cn('shrink-0')} onClick={() => {
 
-             handleSearch(true)
 
-           }}>
 
-             <RiRefreshLine className='mr-1 h-4 w-4' />
 
-             重置
 
-           </Button>
 
-         </div>
 
-         <div className="mt-2">
 
-           <Button variant='primary' className={cn('shrink-0')}
 
-             onClick={() => {
 
-               setTransfer({ mode: 'add', row: null })
 
-               setDetailModalVisible(true)
 
-             }}>
 
-             <RiAddLine className='mr-1 h-4 w-4' />
 
-             新增
 
-           </Button>
 
-           <Button variant='primary' className={cn('ml-2 shrink-0')}
 
-             onClick={() => {
 
-               setShowIntentTypeModalVisible(true)
 
-             }}>
 
-             <RiPriceTagLine className='mr-1 h-4 w-4' />
 
-             意图类型管理
 
-           </Button>
 
-         </div>
 
-         <div className="flex-1">
 
-           <List
 
-             list={list}
 
-             onUpdate={() => handleSearch(false)}
 
-             pagination={{
 
-               total,
 
-               limit,
 
-               onLimitChange: setLimit,
 
-               current: page,
 
-               onChange: setPage,
 
-             }}
 
-           />
 
-         </div>
 
-       </div>
 
-       {
 
-         detailModalVisible && (
 
-           <DetailModal
 
-             transfer={transfer}
 
-             onCancel={() => {
 
-               setDetailModalVisible(false)
 
-               handleSearch()
 
-             }}
 
-             onSend={() => {
 
-               setDetailModalVisible(false)
 
-               handleSearch()
 
-             }}
 
-             onRefresh={(id: string) => {
 
-               setTransfer({
 
-                 mode: 'edit',
 
-                 row: { id },
 
-               })
 
-             }}
 
-           />
 
-         )
 
-       }
 
-       {
 
-         showIntentTypeModalVisible && (
 
-           <TypeModal
 
-             onCancel={() => {
 
-               mutateOptionsIntentType()
 
-               setShowIntentTypeModalVisible(false)
 
-             }}
 
-           />
 
-         )
 
-       }
 
-     </>
 
-   )
 
- }
 
- export default CorpusIndex
 
 
  |