fix(WEB): 수주 페이지 필드 매핑 및 제품-부품 트리 구조 개선
- ApiClient 인터페이스: representative → manager_name, contact_person 변경 - transformApiToFrontend: client.representative → client.manager_name 수정 - ApiOrderItem에 floor_code, symbol_code 필드 추가 (제품-부품 매핑) - ApiOrder에 options 타입 정의 추가 - ApiQuote에 calculation_inputs 타입 정의 추가 - 수주 상세 페이지 제품-부품 트리 구조 UI 개선
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
use App\Helpers\ApiResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Construction\ContractFromBiddingRequest;
|
||||
use App\Http\Requests\Construction\ContractStoreRequest;
|
||||
use App\Http\Requests\Construction\ContractUpdateRequest;
|
||||
use App\Services\Construction\ContractService;
|
||||
@@ -96,4 +97,14 @@ public function stageCounts(Request $request)
|
||||
return $this->service->stageCounts($request->all());
|
||||
}, __('message.contract.fetched'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 입찰에서 계약 생성 (낙찰 → 계약 전환)
|
||||
*/
|
||||
public function storeFromBidding(ContractFromBiddingRequest $request, int $biddingId)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request, $biddingId) {
|
||||
return $this->service->storeFromBidding($biddingId, $request->validated());
|
||||
}, __('message.contract.created'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ public function index(Request $request)
|
||||
public function show(Request $request, $id)
|
||||
{
|
||||
$id = (int) $id;
|
||||
|
||||
return ApiResponse::handle(function () use ($request, $id) {
|
||||
// item_type 선택적 (없으면 ID만으로 items 테이블에서 조회)
|
||||
$itemType = $request->input('type') ?? $request->input('item_type');
|
||||
@@ -146,6 +147,7 @@ public function stats(Request $request)
|
||||
public function destroy(Request $request, $id)
|
||||
{
|
||||
$id = (int) $id;
|
||||
|
||||
return ApiResponse::handle(function () use ($request, $id) {
|
||||
// item_type 필수 (동적 테이블 라우팅에 사용)
|
||||
$itemType = strtoupper($request->input('type') ?? $request->input('item_type') ?? '');
|
||||
|
||||
@@ -151,6 +151,17 @@ public function convertToOrder(int $id)
|
||||
}, __('message.quote.converted'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 입찰 전환
|
||||
* 시공 견적을 입찰로 변환합니다.
|
||||
*/
|
||||
public function convertToBidding(int $id)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($id) {
|
||||
return $this->quoteService->convertToBidding($id);
|
||||
}, __('message.bidding.converted'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 견적번호 미리보기
|
||||
*/
|
||||
|
||||
@@ -137,4 +137,24 @@ public function updateItemStatus(Request $request, int $workOrderId, int $itemId
|
||||
return $this->service->updateItemStatus($workOrderId, $itemId, $request->input('status'));
|
||||
}, __('message.work_order.item_status_updated'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 자재 목록 조회
|
||||
*/
|
||||
public function materials(int $id)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($id) {
|
||||
return $this->service->getMaterials($id);
|
||||
}, __('message.work_order.materials_fetched'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 자재 투입 등록
|
||||
*/
|
||||
public function registerMaterialInput(Request $request, int $id)
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request, $id) {
|
||||
return $this->service->registerMaterialInput($id, $request->input('material_ids', []));
|
||||
}, __('message.work_order.material_input_registered'));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user