195 lines
6.9 KiB
Markdown
195 lines
6.9 KiB
Markdown
|
|
# 작업지시 화면 구현 가이드
|
||
|
|
|
||
|
|
> **화면명**: 작업지시
|
||
|
|
> **파일**: 작업지시.html
|
||
|
|
> **분류**: 생산관리
|
||
|
|
> **구현 가능**: ⚠️ 부분 (그룹화 테이블 필요)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. 화면 개요
|
||
|
|
|
||
|
|
생산계획을 기반으로 작업지시를 생성하고 관리하는 화면입니다.
|
||
|
|
|
||
|
|
### 핵심 기능
|
||
|
|
- 작업지시 목록 조회 (탭별 구분)
|
||
|
|
- 그룹화 기능 (작업일자, 공정별)
|
||
|
|
- 작업지시 생성/수정/삭제
|
||
|
|
- 작업지시서 인쇄
|
||
|
|
- 실적 연계
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. 화면 레이아웃
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────────────┐
|
||
|
|
│ [기간] [품목] [공정] [작업상태▼] [초기화][조회] [사용자옵션][엑셀] │
|
||
|
|
├─────────────────────────────────────────────────────────────────┤
|
||
|
|
│ [전체] [대기] [진행중] [완료] [지연] │
|
||
|
|
├───────────────────────┬─────────────────────────────────────────┤
|
||
|
|
│ 📋 작업지시 목록 │ 📄 작업지시 상세 │
|
||
|
|
│ ─────────────── │ [인쇄] [시작] [완료] [수정] [삭제] │
|
||
|
|
│ Group by: [작업일자▼] │ ───────────────────────── │
|
||
|
|
│ ┌──────────────────┐ │ 지시번호: WO-2026-0001 │
|
||
|
|
│ │▼ 2026-01-30 (5) │ │ 품목명: 제품A │
|
||
|
|
│ │ WO-001|제품A|대기│ │ 지시수량: 100 EA │
|
||
|
|
│ │ WO-002|제품B|진행│ ├─────────────────────────────────────────┤
|
||
|
|
│ │▼ 2026-01-31 (3) │ │ [자재투입] [공정현황] [실적현황] │
|
||
|
|
│ │ WO-003|제품C|대기│ │ ─────────────────────────── │
|
||
|
|
│ └──────────────────┘ │ [투입자재 테이블] │
|
||
|
|
└───────────────────────┴─────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. V2 컴포넌트 매핑
|
||
|
|
|
||
|
|
| HTML 영역 | V2 컴포넌트 | 상태 |
|
||
|
|
|-----------|-------------|------|
|
||
|
|
| 검색 섹션 | `v2-table-search-widget` | ✅ 가능 |
|
||
|
|
| 상태 탭 | `v2-tabs-widget` | ✅ 가능 |
|
||
|
|
| 작업지시 목록 (그룹화) | `v2-table-list` | ⚠️ 그룹화 미지원 |
|
||
|
|
| 분할 패널 | `v2-split-panel-layout` | ✅ 가능 |
|
||
|
|
| 상세 탭 | `v2-tabs-widget` | ✅ 가능 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. 테이블 정의
|
||
|
|
|
||
|
|
### 4.1 작업지시 목록
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
columns: [
|
||
|
|
{ id: 'checkbox', type: 'checkbox', width: 50 },
|
||
|
|
{ id: 'work_order_no', label: '지시번호', width: 120 },
|
||
|
|
{ id: 'work_date', label: '작업일', width: 100 },
|
||
|
|
{ id: 'item_code', label: '품목코드', width: 100 },
|
||
|
|
{ id: 'item_name', label: '품목명', width: 200 },
|
||
|
|
{ id: 'order_qty', label: '지시수량', width: 100, align: 'right' },
|
||
|
|
{ id: 'prod_qty', label: '생산수량', width: 100, align: 'right' },
|
||
|
|
{ id: 'process_name', label: '공정', width: 100 },
|
||
|
|
{ id: 'status', label: '상태', width: 80 },
|
||
|
|
{ id: 'worker', label: '작업자', width: 100 }
|
||
|
|
]
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4.2 자재투입 탭
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
materialColumns: [
|
||
|
|
{ id: 'item_code', label: '품목코드', width: 100 },
|
||
|
|
{ id: 'item_name', label: '품목명', width: 200 },
|
||
|
|
{ id: 'required_qty', label: '소요량', width: 100, align: 'right' },
|
||
|
|
{ id: 'issued_qty', label: '투입량', width: 100, align: 'right' },
|
||
|
|
{ id: 'unit', label: '단위', width: 60 },
|
||
|
|
{ id: 'warehouse', label: '출고창고', width: 100 }
|
||
|
|
]
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. 상태 탭
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
statusTabs: [
|
||
|
|
{ id: 'all', label: '전체', count: 25 },
|
||
|
|
{ id: 'waiting', label: '대기', count: 10 },
|
||
|
|
{ id: 'progress', label: '진행중', count: 8 },
|
||
|
|
{ id: 'completed', label: '완료', count: 5 },
|
||
|
|
{ id: 'delayed', label: '지연', count: 2 }
|
||
|
|
]
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. 그룹화 기능 (v2-grouped-table 필요)
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
groupByOptions: [
|
||
|
|
{ id: 'work_date', label: '작업일자' },
|
||
|
|
{ id: 'process_name', label: '공정' },
|
||
|
|
{ id: 'item_type', label: '품목구분' }
|
||
|
|
]
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. 현재 구현 가능 범위
|
||
|
|
|
||
|
|
### ✅ 가능
|
||
|
|
- 검색 영역
|
||
|
|
- 상태 탭 전환
|
||
|
|
- 분할 패널
|
||
|
|
- 상세 탭
|
||
|
|
- 자재투입/공정현황/실적현황 테이블
|
||
|
|
|
||
|
|
### ⚠️ 부분 가능
|
||
|
|
- 작업지시 목록: 그룹화 없이 일반 테이블
|
||
|
|
|
||
|
|
### ❌ 불가능
|
||
|
|
- 동적 그룹화
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. 구현 JSON
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"screen_code": "WORK_ORDER_MAIN",
|
||
|
|
"screen_name": "작업지시",
|
||
|
|
"components": [
|
||
|
|
{
|
||
|
|
"type": "v2-table-search-widget",
|
||
|
|
"position": { "x": 0, "y": 0, "w": 12, "h": 1 },
|
||
|
|
"config": {
|
||
|
|
"searchFields": [
|
||
|
|
{ "type": "date", "id": "date_range", "placeholder": "기간", "dateRange": true },
|
||
|
|
{ "type": "input", "id": "item_name", "placeholder": "품목명" },
|
||
|
|
{ "type": "select", "id": "process", "placeholder": "공정" },
|
||
|
|
{ "type": "select", "id": "status", "placeholder": "상태" }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "v2-tabs-widget",
|
||
|
|
"position": { "x": 0, "y": 1, "w": 12, "h": 11 },
|
||
|
|
"config": {
|
||
|
|
"tabs": [
|
||
|
|
{ "id": "all", "label": "전체" },
|
||
|
|
{ "id": "waiting", "label": "대기" },
|
||
|
|
{ "id": "progress", "label": "진행중" },
|
||
|
|
{ "id": "completed", "label": "완료" },
|
||
|
|
{ "id": "delayed", "label": "지연" }
|
||
|
|
],
|
||
|
|
"tabContent": {
|
||
|
|
"type": "v2-split-panel-layout",
|
||
|
|
"config": {
|
||
|
|
"masterPanel": {
|
||
|
|
"title": "작업지시 목록",
|
||
|
|
"entityId": "work_order",
|
||
|
|
"columns": [
|
||
|
|
{ "id": "work_order_no", "label": "지시번호" },
|
||
|
|
{ "id": "work_date", "label": "작업일" },
|
||
|
|
{ "id": "item_name", "label": "품목명" },
|
||
|
|
{ "id": "order_qty", "label": "지시수량" },
|
||
|
|
{ "id": "status", "label": "상태" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"detailPanel": {
|
||
|
|
"tabs": [
|
||
|
|
{ "id": "material", "label": "자재투입", "entityId": "work_order_material" },
|
||
|
|
{ "id": "process", "label": "공정현황", "entityId": "work_order_process" },
|
||
|
|
{ "id": "result", "label": "실적현황", "entityId": "work_order_result" }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**v2-grouped-table 개발 시 재활용 가능**
|