소재 실제 샘플 데이터 가져오도록 수정
This commit is contained in:
@@ -45,6 +45,9 @@ var _tabulGrid;
|
||||
// 프로젝트 수주수량 (최상위 프레임에서 가져오기)
|
||||
var projectQuantity = 1; // 기본값
|
||||
|
||||
// 소재 목록 전역 변수
|
||||
var materialList = [];
|
||||
|
||||
$(function(){
|
||||
// 최상위 프레임(mBomPopupHeaderFs.jsp)에서 프로젝트 수주수량 가져오기
|
||||
try {
|
||||
@@ -58,10 +61,37 @@ $(function(){
|
||||
console.log("프로젝트 수주수량 가져오기 실패:", e);
|
||||
}
|
||||
|
||||
// 소재 목록 로드
|
||||
fn_loadMaterialList();
|
||||
|
||||
// Tabulator 초기화
|
||||
fn_initGrid();
|
||||
});
|
||||
|
||||
// 소재 목록 로드
|
||||
function fn_loadMaterialList() {
|
||||
$.ajax({
|
||||
url: '/admin/getMaterialList.do',
|
||||
method: 'POST',
|
||||
async: false,
|
||||
success: function(response) {
|
||||
if(response && response.list) {
|
||||
// 중복 제거하여 소재 코드만 추출
|
||||
var uniqueMaterials = {};
|
||||
response.list.forEach(function(item) {
|
||||
uniqueMaterials[item.MATERIAL_CODE] = true;
|
||||
});
|
||||
materialList = Object.keys(uniqueMaterials);
|
||||
console.log("소재 목록 로드 완료:", materialList);
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
console.error("소재 목록 로드 실패");
|
||||
materialList = [];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Tabulator 그리드 초기화
|
||||
function fn_initGrid() {
|
||||
var maxLevel = ${empty MAXLEV ? 1 : MAXLEV};
|
||||
@@ -312,26 +342,7 @@ function fn_initGrid() {
|
||||
field: 'RAW_MATERIAL',
|
||||
editor: 'list',
|
||||
editorParams: {
|
||||
values: ['SM45C', 'STS304', 'STS316', 'AL6061', 'AL7075'] // TODO: 실제 소재 목록으로 교체
|
||||
},
|
||||
editable: function(cell) {
|
||||
return cell.getRow().getData().SUPPLY_TYPE === '사급';
|
||||
},
|
||||
formatter: function(cell) {
|
||||
var data = cell.getRow().getData();
|
||||
if(data.SUPPLY_TYPE === '자급') return '-';
|
||||
return cell.getValue() || '';
|
||||
}
|
||||
},
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'left',
|
||||
width: 100,
|
||||
title: '사이즈',
|
||||
field: 'SIZE',
|
||||
editor: 'list',
|
||||
editorParams: {
|
||||
values: ['Φ10', 'Φ20', 'Φ30', '10x10', '20x20'] // TODO: 실제 사이즈 목록으로 교체
|
||||
values: materialList // 로드된 소재 목록 사용
|
||||
},
|
||||
editable: function(cell) {
|
||||
return cell.getRow().getData().SUPPLY_TYPE === '사급';
|
||||
@@ -342,12 +353,77 @@ function fn_initGrid() {
|
||||
return cell.getValue() || '';
|
||||
},
|
||||
cellEdited: function(cell) {
|
||||
// 소재, 사이즈 선택 시 소재품번 자동 생성
|
||||
// 소재 선택 시 사이즈 초기화
|
||||
var row = cell.getRow();
|
||||
row.update({
|
||||
SIZE: '',
|
||||
RAW_MATERIAL_NO: ''
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'left',
|
||||
width: 100,
|
||||
title: '사이즈',
|
||||
field: 'SIZE',
|
||||
editor: 'list',
|
||||
editorParams: function(cell) {
|
||||
// 선택된 소재에 따라 동적으로 사이즈 목록 로드
|
||||
var data = cell.getRow().getData();
|
||||
var materialCode = data.RAW_MATERIAL;
|
||||
|
||||
if(!materialCode) {
|
||||
return {values: []};
|
||||
}
|
||||
|
||||
// 서버에서 해당 소재의 사이즈 목록 가져오기
|
||||
var sizes = [];
|
||||
$.ajax({
|
||||
url: '/admin/getMaterialSizes.do',
|
||||
method: 'POST',
|
||||
data: {materialCode: materialCode},
|
||||
async: false,
|
||||
success: function(response) {
|
||||
if(response && response.list) {
|
||||
sizes = response.list.map(function(item) {
|
||||
return item.SIZE_SPEC;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return {values: sizes};
|
||||
},
|
||||
editable: function(cell) {
|
||||
var data = cell.getRow().getData();
|
||||
return data.SUPPLY_TYPE === '사급' && data.RAW_MATERIAL;
|
||||
},
|
||||
formatter: function(cell) {
|
||||
var data = cell.getRow().getData();
|
||||
if(data.SUPPLY_TYPE === '자급') return '-';
|
||||
return cell.getValue() || '';
|
||||
},
|
||||
cellEdited: function(cell) {
|
||||
// 사이즈 선택 시 소재품번 자동 조회
|
||||
var row = cell.getRow();
|
||||
var data = row.getData();
|
||||
|
||||
if(data.RAW_MATERIAL && data.SIZE) {
|
||||
var materialNo = data.RAW_MATERIAL + '-' + data.SIZE;
|
||||
row.update({RAW_MATERIAL_NO: materialNo});
|
||||
// 서버에서 소재품번 조회
|
||||
$.ajax({
|
||||
url: '/admin/getMaterialPartNo.do',
|
||||
method: 'POST',
|
||||
data: {
|
||||
materialCode: data.RAW_MATERIAL,
|
||||
sizeSpec: data.SIZE
|
||||
},
|
||||
success: function(response) {
|
||||
if(response && response.MATERIAL_PART_NO) {
|
||||
row.update({RAW_MATERIAL_NO: response.MATERIAL_PART_NO});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user