diff --git a/src/app/api/suitable/list/route.ts b/src/app/api/suitable/list/route.ts
index 005d556..61df570 100644
--- a/src/app/api/suitable/list/route.ts
+++ b/src/app/api/suitable/list/route.ts
@@ -41,7 +41,7 @@ export async function GET(request: NextRequest) {
) AS details
ON msm.id = details.main_id
WHERE 1=1
- --roofMtCd AND msm.roof_mt_cd = ':roofMtCd'
+ --roofMtCd AND msm.roof_mt_cd IN (:roofMtCd)
--productName AND msm.product_name LIKE '%:productName%'
ORDER BY msm.product_name
OFFSET (@P1 - 1) * @P2 ROWS
@@ -50,8 +50,13 @@ export async function GET(request: NextRequest) {
// 검색 조건 설정
if (category) {
+ let roofMtQuery = `
+ SELECT roof_mt_cd
+ FROM ms_suitable_roof_material_group
+ WHERE roof_matl_grp_cd = ':roofMtGrpCd'
+ `
query = query.replace('--roofMtCd ', '')
- query = query.replace(':roofMtCd', category)
+ query = query.replace(':roofMtCd', roofMtQuery.replace(':roofMtGrpCd', category))
}
if (keyword) {
query = query.replace('--productName ', '')
@@ -60,6 +65,8 @@ export async function GET(request: NextRequest) {
const suitable: Suitable[] = await prisma.$queryRawUnsafe(query, pageNumber, itemPerPage)
+ // console.log(`검색 조건 :::: 카테고리: ${category}, 키워드: ${keyword}`)
+
return NextResponse.json(suitable)
} catch (error) {
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
diff --git a/src/components/suitable/Suitable.tsx b/src/components/suitable/Suitable.tsx
index f5f22b2..35fe94a 100644
--- a/src/components/suitable/Suitable.tsx
+++ b/src/components/suitable/Suitable.tsx
@@ -10,29 +10,28 @@ import { SUITABLE_HEAD_CODE } from '@/types/Suitable'
export default function Suitable() {
const [reference, setReference] = useState(true)
+ const [searchValue, setSearchValue] = useState('')
- const { getSuitableCommCode } = useSuitable()
- const { suitableCommCode, selectedCategory, setSelectedCategory, searchValue, setSearchValue, setIsSearch, clearSelectedItems } = useSuitableStore()
+ const { getSuitableCommCode, clearSuitableSearch } = useSuitable()
+ const { suitableCommCode, selectedCategory, setSelectedCategory, setSearchKeyword, clearSearchKeyword } = useSuitableStore()
const handleInputSearch = async () => {
if (!searchValue.trim()) {
alert('屋根材の製品名を入力してください。')
return
}
- setIsSearch(true)
+ setSearchKeyword(searchValue)
}
const handleInputClear = () => {
setSearchValue('')
- setIsSearch(false)
+ clearSearchKeyword()
}
useEffect(() => {
getSuitableCommCode()
return () => {
- setSelectedCategory('')
- setSearchValue('')
- clearSelectedItems()
+ clearSuitableSearch()
}
}, [])
@@ -41,7 +40,7 @@ export default function Suitable() {