기능 개선

This commit is contained in:
2026-03-05 17:56:26 +09:00
parent acd76ee2d2
commit 2cc8350f6c
2 changed files with 106 additions and 49 deletions

View File

@@ -119,7 +119,8 @@ var _ACTION_RESULT_LIST = [
{"CODE": "", "NAME": "선택"},
{"CODE": "수정", "NAME": "수정완료"},
{"CODE": "폐기", "NAME": "폐기"},
{"CODE": "특채", "NAME": "특채완료"}
{"CODE": "특채", "NAME": "특채완료"},
{"CODE": "검사완료", "NAME": "검사완료"}
];
// 검사자 목록
var _INSPECTOR_LIST = [];

View File

@@ -26,9 +26,10 @@ String loginUserId = CommonUtils.checkNull(person.getUserId());
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<link href="/css/tabulator/tabulator.min.css" rel="stylesheet">
<link href="/css/select2/select2.min.css" rel="stylesheet">
<link href="/css/select2.css" rel="stylesheet">
<script type="text/javascript" src="/js/tabulator/tabulator.min.js"></script>
<script type="text/javascript" src="/js/select2/select2.min.js"></script>
<script type="text/javascript" src="/js/tabulator/tabulator_custom.js"></script>
<script type="text/javascript" src="/js/select2.js"></script>
<style>
body, html {
@@ -301,17 +302,18 @@ var today = "${today}";
// 현재 수정 중인 INSPECTION_GROUP_ID (수정 모드일 때 사용)
var currentInspectionGroupId = "<%=INSPECTION_GROUP_ID%>";
// 입고관리 데이터 (드롭박스용)
var deliveryDataList = [];
// 전체 품목 데이터 (드롭박스용)
var allPartList = [];
var modelNameList = [];
var partNoList = [];
var partNameList = [];
// 코드 목록 (드롭박스용)
var productTypeList = ["Machine", "A/S", "D/S", "B/S", "C/T", "A/C", "W/M", "기타"];
var defectTypeList = ["외관불량", "치수불량", "기능불량", "재료불량", "조립불량", "도장불량", "용접불량", "기타"];
var defectCauseList = ["작업자 실수", "설비 이상", "자재 불량", "설계 오류", "공정 이상", "환경 요인", "기타"];
var responsibleDeptList = ["사용자 정보(부서)", "구매", "생산기술", "제조1팀", "제조2팀", "제조3팀", "연구소", "외주업체", "품질"];
// 불량유형 목록 (코드 0001820)
var _DEFECT_TYPE_LIST = [];
// 불량원인: 불량유형 선택에 따라 동적 조회
var responsibleDeptList = [];
// 작업자 목록 (서버에서 조회)
var workerList = [
<c:forEach var="worker" items="${workerList}" varStatus="status">
@@ -321,8 +323,27 @@ var workerList = [
var processStatusList = ["수정", "폐기"];
var dispositionTypeList = ["수정완료", "폐기", "특채완료"];
// 검사자 목록
var inspectorList = [];
$(document).ready(function(){
// 입고관리 데이터 로드
// 검사자 목록 조회
inspectorList = [{"CODE": "", "NAME": "선택"}].concat(
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getUserselect"})
);
// 귀책부서 목록 조회 (DEPT_INFO)
var deptResult = fnc_getJsonAllDataListBySqlId({"sqlId": "common.getDeptselect"});
if(deptResult && deptResult.length > 0) {
deptResult.forEach(function(d) { responsibleDeptList.push(d.NAME); });
}
// 불량유형 목록 조회
_DEFECT_TYPE_LIST = [{"CODE": "", "NAME": "선택"}].concat(
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getCodeselect", "code": "0001820"})
);
// 전체 품목 데이터 로드
fn_loadDeliveryData();
// 그리드 초기화
@@ -348,35 +369,27 @@ $(document).ready(function(){
$("#btnDelRight").click(fn_delRightRow);
});
// 입고관리 데이터 로드
// 전체 품목 데이터 로드
function fn_loadDeliveryData(){
$.ajax({
url: "/purchaseOrder/getDeliveryListForDropdown.do",
type: "POST",
async: false,
dataType: "json",
success: function(result){
if(result && result.list){
deliveryDataList = result.list;
var modelSet = {}, partNoSet = {}, partNameSet = {};
deliveryDataList.forEach(function(item){
if(item.MODEL_NAME && item.MODEL_NAME != '') modelSet[item.MODEL_NAME] = item;
if(item.PART_NO && item.PART_NO != '') partNoSet[item.PART_NO] = item;
if(item.PART_NAME && item.PART_NAME != '') partNameSet[item.PART_NAME] = item;
});
modelNameList = Object.keys(modelSet);
partNoList = Object.keys(partNoSet);
partNameList = Object.keys(partNameSet);
console.log("입고관리 데이터 로드 완료:", deliveryDataList.length + "건");
}
},
error: function(xhr, status, error){
console.error("입고관리 데이터 로드 실패:", error);
}
});
var result = fnc_getJsonAllDataListBySqlId({"sqlId": "salesMng.getAllPartMngList"});
if(result && result.length > 0){
allPartList = result;
var modelSet = {}, partNoSet = {}, partNameSet = {};
allPartList.forEach(function(item){
var partName = item.PART_NAME || '';
var partNo = item.PART_NO || '';
if(partName != '') modelSet[partName] = true;
if(partNo != '') partNoSet[partNo] = true;
if(partName != '') partNameSet[partName] = true;
});
modelNameList = Object.keys(modelSet);
partNoList = Object.keys(partNoSet);
partNameList = Object.keys(partNameSet);
console.log("전체 품목 데이터 로드 완료:", allPartList.length + "건");
}
}
// Select2 에디터 생성 함수
@@ -455,7 +468,14 @@ function fn_initLeftGrid(){
editorParams: { elementAttributes: { type: "date" } },
editable: isEditable
},
{title:"검사자", field:"INSPECTOR", editor:"input", minWidth:70, headerSort:false, editable: isEditable},
{title:"검사자", field:"INSPECTOR", minWidth:80, headerSort:false,
editor: fnc_customSelectEditor,
editorParams: {valueId:"CODE", labelId:"NAME", values: inspectorList},
formatter: function(cell) {
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values: inspectorList});
},
editable: isEditable
},
{title:"품명(모델명)", field:"MODEL_NAME", minWidth:110, headerSort:false,
editor: createSelect2Editor(modelNameList),
editable: isEditable
@@ -487,12 +507,11 @@ function fn_initLeftGrid(){
cellEdited: function(cell){
var partNo = cell.getValue();
if(partNo){
var matched = deliveryDataList.find(function(d){ return d.PART_NO == partNo; });
var matched = allPartList.find(function(d){ return d.PART_NO == partNo; });
if(matched){
cell.getRow().update({
PART_NAME: matched.PART_NAME || '',
PART_OBJID: matched.PART_OBJID || '',
RECEIPT_QTY: matched.RECEIPT_QTY || matched.DELIVERY_QTY || ''
PART_OBJID: matched.OBJID || ''
});
}
}
@@ -504,11 +523,11 @@ function fn_initLeftGrid(){
cellEdited: function(cell){
var partName = cell.getValue();
if(partName){
var matched = deliveryDataList.find(function(d){ return d.PART_NAME == partName; });
var matched = allPartList.find(function(d){ return d.PART_NAME == partName; });
if(matched){
cell.getRow().update({
PART_NO: matched.PART_NO || '',
RECEIPT_QTY: matched.RECEIPT_QTY || matched.DELIVERY_QTY || ''
PART_OBJID: matched.OBJID || ''
});
}
}
@@ -603,11 +622,39 @@ function fn_initRightGrid(){
}
},
{title:"불량유형", field:"DEFECT_TYPE", minWidth:85, headerSort:false,
editor: createSelect2Editor(defectTypeList),
editor: fnc_customSelectEditor,
formatter: function(cell) {
var val = cell.getValue();
if(!val || val === '') return '';
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values:_DEFECT_TYPE_LIST});
},
editorParams: {valueId:"CODE", labelId:"NAME", values:_DEFECT_TYPE_LIST},
editable: isEditable
},
{title:"불량원인", field:"DEFECT_CAUSE", minWidth:85, headerSort:false,
editor: createSelect2Editor(defectCauseList),
editor: fnc_customSelectEditor,
formatter: function(cell) {
var val = cell.getValue();
if(!val || val === '') return '';
var defectType = cell.getData().DEFECT_TYPE;
if(defectType) {
var reasonList = [{"CODE": "", "NAME": "선택"}].concat(
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getCodeselect", "code": defectType})
);
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values: reasonList});
}
return '';
},
editorParams: function(cell) {
var defectType = cell.getData().DEFECT_TYPE;
if(defectType) {
var reasonList = [{"CODE": "", "NAME": "선택"}].concat(
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getCodeselect", "code": defectType})
);
return {valueId:"CODE", labelId:"NAME", values: reasonList};
}
return {valueId:"CODE", labelId:"NAME", values: [{"CODE": "", "NAME": "선택"}]};
},
editable: isEditable
},
{title:"귀책부서", field:"RESPONSIBLE_DEPT", minWidth:80, headerSort:false,
@@ -662,14 +709,21 @@ function fn_initRightGrid(){
rowFormatter: function(row){
var data = row.getData();
if(data.IS_SAVED || data.IS_LOCKED === 'Y'){
row.getElement().style.backgroundColor = "#e8f5e9"; // 연한 초록색
row.getElement().style.backgroundColor = "#e8f5e9";
row.getElement().style.color = "#555";
} else {
row.getElement().style.backgroundColor = ""; // 원래 색상
row.getElement().style.backgroundColor = "";
row.getElement().style.color = "";
}
}
});
// 불량유형 변경 시 불량원인 초기화
rightGrid.on("cellEdited", function(cell) {
if(cell.getField() === 'DEFECT_TYPE') {
cell.getRow().update({"DEFECT_CAUSE": ""});
}
});
}
// 우측 그리드에 데이터 표시 (선택된 좌측 행의 불량 데이터)
@@ -728,8 +782,10 @@ function fn_addLeftRow(){
var newObjId = result.OBJID;
leftGrid.addRow({
ROW_ID: newObjId, // OBJID를 ROW_ID로 사용
OBJID: newObjId, // 서버에서 생성한 실제 OBJID
ROW_ID: newObjId,
OBJID: newObjId,
INSPECTION_DATE: today,
INSPECTOR: loginUserId,
MODEL_NAME: "",
PRODUCT_TYPE: "",
WORK_ORDER_NO: "",