feat(804-3): 줄 쌓기 수정 1차 — 표 값 고르기 · 산출근거 들여쓰기 · 찾아 넣기 창 · 짝 강조 · 기계 이름
- 표 값(요구 678-1): 「표」 꼬리표가 글뿐이라 눌러도 안 열림 → [표 · 고른 줄 · 칸 ▾] 단추 = 품셈 표 창(값 칸 누름 = 그 줄 · 칸) 옵션에 매인 조건(폼타이규격 등) = 그 줄만 고름 · 다른 줄 막힘 + 「위 옵션에서 고름」 안내 · M02 길 표 값 글 수도 고름 - 산출근거 들여쓰기(678-2): 머리 0 · 항목 1 · 가나다 2 · 줄 = 항목 + 1 · 펼친 블록 = 그 줄 + 1(수준 = stackLevels) - 찾아 넣기(678-3): [+ 줄] 인력 · 재료 · 기계 · 다른 단가산출 = M02 [항목 추가] 창 그대로(그 종류만) · 고르면 줄 생김(닫으면 없음) 있는 줄 = [찾아 바꾸기](같은 로직 기계 = 지역 · 보정작업 넘김 그대로) · 옛 찾기 칸 + 고름 목록 · 기종 코드 고르개 걷음 빈 틀 = [찾아 넣기](돈 아닌 단가산출 결과만 — Find_Pick results) - 짝 강조(679-1): 오른쪽 줄 누름 = 왼쪽 카드 강조 + 보이는 자리로 · 왼쪽 누름 = 오른쪽 같은 줄 강조 - 기계 이름(679-2): 기계 줄 = 기종 이름 · 규격 · machine-hourly 답에 로직 키 · 원문번호 더함(기존 칸 그대로) - 모델 common_util_line_stack_pick.ts(boundConds · currentRow · pickCell · addPicked · repick · stackLevels) - 시험 test_804_2 넓힘 3(표 고름 = 값 + 출처 · 서버 셈 같음 · 찾아 넣기 넷 = 요소 키 · 서버 금액 · 다시 고름 · 수준) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -53,6 +53,9 @@ export interface M01Element {
|
||||
값: number | null;
|
||||
/** 기계(736-3) — 한 시간 노 · 재 · 경(서버 `/logic-lib/machine-hourly` · 고르는 순간 받음) */
|
||||
단가?: Record<"노무비" | "재료비" | "경비", number>;
|
||||
/** 기계(804-3) — 시간당 경비 로직 키 · 기종 원문번호(줄 쌓기 기계 줄 연결) */
|
||||
로직?: string;
|
||||
원문번호?: string;
|
||||
}
|
||||
|
||||
/** 고를 수 있는 종류 — logic = M01 단가산출 · 기초 로직 · labor = 인력 · material = 재료 · machine = 기계 · sk = M02 단가산출 · pre = 일위대가 */
|
||||
@@ -70,6 +73,8 @@ export interface FindPickOptions {
|
||||
material?: (e: M01Element) => void;
|
||||
/** M01 단가산출 로직 고름 */
|
||||
logic: (x: LogicSummary) => void;
|
||||
/** 804-3 돈 아닌 기초(작업량 등 결과)만 — 줄 쌓기 빈 틀 고름 */
|
||||
results?: boolean;
|
||||
/** M02 단가산출 · 일위대가 고름(참조) */
|
||||
ref?: (ref: LaborRef, name: string) => void;
|
||||
/** M01 인력 · 재료 고름 — 없으면 그 줄 회색 막힘 */
|
||||
@@ -210,7 +215,7 @@ export function openFindPicker(opt: FindPickOptions): void {
|
||||
const hit = matchLogic(q, { ...x, 이름: `${x.이름} ${x.규격}` }); // 공용 · 208-1
|
||||
if (!hit.ok) return [];
|
||||
const logic = logics.find((y) => y.키 === x.키);
|
||||
if (logic && !logic.결과단위.trim().startsWith("원")) return []; // 돈 아닌 기초(작업량 · 728-2) 뺌
|
||||
if (logic && !logic.결과단위.trim().startsWith("원") !== !!opt.results) return []; // 돈 아닌 기초(작업량 · 728-2) 뺌 · results = 그것만
|
||||
return [
|
||||
{
|
||||
품명: join(x.이름, aliasNote(hit.alias)),
|
||||
@@ -231,12 +236,12 @@ export function openFindPicker(opt: FindPickOptions): void {
|
||||
/** 기계 고름 — 한 시간 값을 받아 단가로(못 셈 = 까닭 알림 · 창 그대로) */
|
||||
const hourly = async (e: M01Element): Promise<M01Element | null> => {
|
||||
try {
|
||||
const got = await call<{ ok: boolean; reason?: string } & Record<string, number>>(
|
||||
`/logic-lib/machine-hourly?key=${encodeURIComponent(e.코드)}`,
|
||||
);
|
||||
const got = await call<
|
||||
{ ok: boolean; reason?: string; 로직?: string; 원문번호?: string } & Record<string, number>
|
||||
>(`/logic-lib/machine-hourly?key=${encodeURIComponent(e.코드)}`);
|
||||
if (!got.ok) throw new Error(got.reason ?? tc("Load_Failed"));
|
||||
const { 노무비, 재료비, 경비, 계 } = got;
|
||||
return { ...e, 값: 계, 단가: { 노무비, 재료비, 경비 } };
|
||||
const { 노무비, 재료비, 경비, 계, 로직, 원문번호 } = got;
|
||||
return { ...e, 값: 계, 단가: { 노무비, 재료비, 경비 }, 로직, 원문번호 };
|
||||
} catch (error) {
|
||||
fail(error);
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user