기능 개선
This commit is contained in:
@@ -119,7 +119,8 @@ var _ACTION_RESULT_LIST = [
|
||||
{"CODE": "", "NAME": "선택"},
|
||||
{"CODE": "수정", "NAME": "수정완료"},
|
||||
{"CODE": "폐기", "NAME": "폐기"},
|
||||
{"CODE": "특채", "NAME": "특채완료"}
|
||||
{"CODE": "특채", "NAME": "특채완료"},
|
||||
{"CODE": "검사완료", "NAME": "검사완료"}
|
||||
];
|
||||
// 검사자 목록
|
||||
var _INSPECTOR_LIST = [];
|
||||
|
||||
@@ -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: "",
|
||||
|
||||
Reference in New Issue
Block a user