Merge pull request 'feature/suitable' (#26) from feature/suitable into dev
Reviewed-on: #26
This commit is contained in:
commit
7973d7c2b1
@ -79,13 +79,13 @@ model SD_SERVEY_SALES_DETAIL_INFO {
|
||||
id Int @id @default(autoincrement())
|
||||
contract_capacity String? @db.VarChar(20)
|
||||
retail_company String? @db.VarChar(100)
|
||||
supplementary_facilities Int?
|
||||
supplementary_facilities String? @db.VarChar(20)
|
||||
supplementary_facilities_etc String? @db.VarChar(200)
|
||||
installation_system Int?
|
||||
installation_system_etc String? @db.VarChar(200)
|
||||
construction_year Int?
|
||||
construction_year_etc String? @db.VarChar(200)
|
||||
roof_material Int?
|
||||
roof_material String? @db.VarChar(20)
|
||||
roof_material_etc String? @db.VarChar(200)
|
||||
roof_shape Int?
|
||||
roof_shape_etc String? @db.VarChar(200)
|
||||
@ -177,3 +177,33 @@ model BC_COMM_L {
|
||||
|
||||
@@id([HEAD_CD, CODE], map: "PK_BC_COMM_L")
|
||||
}
|
||||
|
||||
model MS_SUITABLE_ROOF_MATERIAL_GROUP {
|
||||
id Int @id @default(autoincrement())
|
||||
roof_material_group String @db.VarChar(200)
|
||||
roof_material String @db.VarChar(200)
|
||||
created_at DateTime @default(now(), map: "DF__MS_SUITAB__creat__4F7CD00D")
|
||||
updated_at DateTime
|
||||
}
|
||||
|
||||
model MS_SUITABLE_DETAIL {
|
||||
id Int @id @default(autoincrement())
|
||||
main_id Int
|
||||
trestle_manufacturer_product_code String? @db.VarChar(200)
|
||||
trestle_manufacturer_product_name String? @db.VarChar(200)
|
||||
memo String? @db.VarChar(500)
|
||||
created_at DateTime @default(now(), map: "DF__MS_SUITAB__creat__571DF1D5")
|
||||
updated_at DateTime?
|
||||
MS_SUITABLE_MAIN MS_SUITABLE_MAIN @relation(fields: [main_id], references: [id], onUpdate: NoAction, map: "MS_SUITABLE_DETAIL_MS_SUITABLE_MAIN_FK")
|
||||
}
|
||||
|
||||
model MS_SUITABLE_MAIN {
|
||||
id Int @id @default(autoincrement())
|
||||
product_name String @db.VarChar(200)
|
||||
manufacturer String? @db.VarChar(200)
|
||||
roof_material String? @db.VarChar(100)
|
||||
shape String? @db.VarChar(200)
|
||||
created_at DateTime @default(now(), map: "DF__MS_SUITAB__creat__5441852A")
|
||||
updated_at DateTime? @updatedAt
|
||||
details MS_SUITABLE_DETAIL[]
|
||||
}
|
||||
|
||||
30
src/hooks/useSuitable.ts
Normal file
30
src/hooks/useSuitable.ts
Normal file
@ -0,0 +1,30 @@
|
||||
import { suitableApi } from '@/api/suitable'
|
||||
|
||||
export function useSuitable() {
|
||||
const getCategories = async () => {
|
||||
try {
|
||||
return await suitableApi.getCategory()
|
||||
} catch (error) {
|
||||
console.error('카테고리 데이터 로드 실패:', error)
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
const getSuitables = async () => {
|
||||
try {
|
||||
return await suitableApi.getList()
|
||||
} catch (error) {
|
||||
console.error('지붕재 데이터 로드 실패:', error)
|
||||
}
|
||||
}
|
||||
|
||||
const updateSearchResults = async (selectedCategory: string | undefined, searchValue: string | undefined) => {
|
||||
try {
|
||||
return await suitableApi.getList(selectedCategory, searchValue)
|
||||
} catch (error) {
|
||||
console.error('지붕재 데이터 검색 실패:', error)
|
||||
}
|
||||
}
|
||||
|
||||
return { getCategories, getSuitables, updateSearchResults }
|
||||
}
|
||||
68
src/store/useSuitableStore.ts
Normal file
68
src/store/useSuitableStore.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import { create } from 'zustand'
|
||||
import { Suitable, suitableApi } from '@/api/suitable'
|
||||
|
||||
interface SuitableState {
|
||||
// // 검색 결과 리스트
|
||||
// searchResults: Suitable[]
|
||||
// // 초기 데이터 로드
|
||||
// fetchInitializeData: () => Promise<void>
|
||||
// // 검색 결과 설정
|
||||
// setSearchResults: (results: Suitable[]) => void
|
||||
// // 검색 결과 초기화
|
||||
// resetSearchResults: () => void
|
||||
|
||||
// 선택된 아이템 리스트
|
||||
selectedItems: Suitable[]
|
||||
// 선택된 아이템 추가
|
||||
addSelectedItem: (item: Suitable) => void
|
||||
// 선택된 아이템 제거
|
||||
removeSelectedItem: (itemId: number) => void
|
||||
// 선택된 아이템 모두 제거
|
||||
clearSelectedItems: () => void
|
||||
}
|
||||
|
||||
export const useSuitableStore = create<SuitableState>((set) => ({
|
||||
// // 초기 상태
|
||||
// searchResults: [],
|
||||
|
||||
// // 초기 데이터 로드
|
||||
// fetchInitializeData: async () => {
|
||||
// const suitables = await fetchInitialSuitablee()
|
||||
// set({ searchResults: suitables })
|
||||
// },
|
||||
|
||||
// // 검색 결과 설정
|
||||
// setSearchResults: (results) => set({ searchResults: results }),
|
||||
|
||||
// // 검색 결과 초기화
|
||||
// resetSearchResults: () => set({ searchResults: [] }),
|
||||
|
||||
// 초기 상태
|
||||
selectedItems: [],
|
||||
|
||||
// 선택된 아이템 추가 (중복 방지)
|
||||
addSelectedItem: (item) =>
|
||||
set((state) => ({
|
||||
selectedItems: state.selectedItems.some((i) => i.id === item.id) ? state.selectedItems : [...state.selectedItems, item],
|
||||
})),
|
||||
|
||||
// 선택된 아이템 제거
|
||||
removeSelectedItem: (itemId) =>
|
||||
set((state) => ({
|
||||
selectedItems: state.selectedItems.filter((item) => item.id !== itemId),
|
||||
})),
|
||||
|
||||
// 선택된 아이템 모두 제거
|
||||
clearSelectedItems: () => set({ selectedItems: [] }),
|
||||
}))
|
||||
|
||||
// // 전체 데이터 초기화 함수
|
||||
// async function fetchInitialSuitablee() {
|
||||
// try {
|
||||
// const suitable = await suitableApi.getList()
|
||||
// return suitable
|
||||
// } catch (error) {
|
||||
// console.error('초기 데이터 로드 실패:', error)
|
||||
// return []
|
||||
// }
|
||||
// }
|
||||
Loading…
x
Reference in New Issue
Block a user