공정검사관리 프로젝트번호 선택 안했을 경우 모든 파트 검색되도록 수정
This commit is contained in:
@@ -144,26 +144,15 @@ $(document).ready(function(){
|
||||
fn_search();
|
||||
});
|
||||
|
||||
// 프로젝트별 파트 목록 캐시
|
||||
var _PART_LIST_CACHE = {};
|
||||
|
||||
// 프로젝트번호로 MBOM 파트 목록 조회
|
||||
// 프로젝트번호로 MBOM 파트 목록 조회 (미선택 시 전체 조회)
|
||||
function fn_getPartListByProject(projectNo) {
|
||||
if (!projectNo) return [{"CODE": "", "NAME": "선택"}];
|
||||
var param = {"sqlId": "common.getMbomPartListByProjectNo"};
|
||||
if (projectNo) param.PROJECT_NO = projectNo;
|
||||
|
||||
// 캐시에 있으면 캐시에서 반환
|
||||
if (_PART_LIST_CACHE[projectNo]) {
|
||||
return _PART_LIST_CACHE[projectNo];
|
||||
}
|
||||
|
||||
// 서버에서 조회
|
||||
var partList = [{"CODE": "", "NAME": "선택"}].concat(
|
||||
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getMbomPartListByProjectNo", "PROJECT_NO": projectNo})
|
||||
fnc_getJsonAllDataListBySqlId(param)
|
||||
);
|
||||
|
||||
// 캐시에 저장
|
||||
_PART_LIST_CACHE[projectNo] = partList;
|
||||
|
||||
return partList;
|
||||
}
|
||||
|
||||
@@ -207,30 +196,32 @@ function fn_select2Editor(cell, onRendered, success, cancel, editorParams) {
|
||||
$(select).select2("open");
|
||||
});
|
||||
|
||||
var isCleared = false;
|
||||
var isCompleted = false;
|
||||
|
||||
$(select).on("select2:select", function(e) {
|
||||
if(isCompleted) return;
|
||||
isCompleted = true;
|
||||
var selectedVal = $(select).val() || "";
|
||||
if(typeof editorParams.onSelect === "function") {
|
||||
editorParams.onSelect(cell, selectedVal);
|
||||
}
|
||||
try { $(select).select2("destroy"); } catch(e) {}
|
||||
success(selectedVal);
|
||||
});
|
||||
|
||||
$(select).on("select2:clear", function(e) {
|
||||
isCleared = true;
|
||||
if(typeof editorParams.onSelect === "function") {
|
||||
editorParams.onSelect(cell, "");
|
||||
}
|
||||
if(isCompleted) return;
|
||||
isCompleted = true;
|
||||
var $sel = $(select);
|
||||
setTimeout(function() {
|
||||
$(select).select2("close");
|
||||
try { $sel.select2("destroy"); } catch(e) {}
|
||||
success("");
|
||||
}, 0);
|
||||
}, 50);
|
||||
});
|
||||
|
||||
$(select).on("select2:close", function() {
|
||||
if(isCleared) return;
|
||||
success($(select).val() || "");
|
||||
if(isCompleted) return;
|
||||
isCompleted = true;
|
||||
var val = $(select).val() || "";
|
||||
try { $(select).select2("destroy"); } catch(e) {}
|
||||
success(val);
|
||||
});
|
||||
|
||||
return container;
|
||||
@@ -270,21 +261,7 @@ function fn_search(){
|
||||
editor: fn_select2Editor,
|
||||
editorParams: {
|
||||
valueId: "CODE", labelId: "NAME", values: _PROJECT_LIST,
|
||||
placeholder: "프로젝트 검색...",
|
||||
onSelect: function(cell, selectedValue) {
|
||||
var productName = "";
|
||||
for(var i = 0; i < _PROJECT_LIST.length; i++) {
|
||||
if(_PROJECT_LIST[i].CODE == selectedValue) {
|
||||
productName = _PROJECT_LIST[i].PRODUCT_NAME || "";
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(selectedValue) fn_getPartListByProject(selectedValue);
|
||||
cell.getRow().update({
|
||||
"PART_OBJID": "", "PART_NO": "", "PART_NAME": "",
|
||||
"PRODUCT_NAME": productName
|
||||
});
|
||||
}
|
||||
placeholder: "프로젝트 검색..."
|
||||
},
|
||||
formatter: function(cell) {
|
||||
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values:_PROJECT_LIST});
|
||||
@@ -412,11 +389,28 @@ function fn_search(){
|
||||
var row = cell.getRow();
|
||||
var field = cell.getField();
|
||||
|
||||
// 프로젝트 변경 시 제품구분 설정 + 파트 초기화
|
||||
if (field === 'PROJECT_OBJID') {
|
||||
var projectObjid = cell.getValue() || "";
|
||||
var productName = "";
|
||||
for(var i = 0; i < _PROJECT_LIST.length; i++) {
|
||||
if(_PROJECT_LIST[i].CODE == projectObjid) {
|
||||
productName = _PROJECT_LIST[i].PRODUCT_NAME || "";
|
||||
break;
|
||||
}
|
||||
}
|
||||
fn_getPartListByProject(projectObjid);
|
||||
row.update({
|
||||
"PART_OBJID": "", "PART_NO": "", "PART_NAME": "",
|
||||
"PRODUCT_NAME": productName
|
||||
});
|
||||
}
|
||||
|
||||
// 파트 선택 시 품번/품명 자동 설정
|
||||
if (field === 'PART_OBJID') {
|
||||
var partObjid = cell.getValue();
|
||||
var projectObjid = row.getData().PROJECT_OBJID;
|
||||
if (partObjid && projectObjid) {
|
||||
if (partObjid) {
|
||||
var partList = fn_getPartListByProject(projectObjid);
|
||||
for (var i = 0; i < partList.length; i++) {
|
||||
if (partList[i].CODE == partObjid) {
|
||||
|
||||
@@ -3407,17 +3407,32 @@ ORDER BY COALESCE(T.REVISION, '1.0')
|
||||
|
||||
<!-- 프로젝트 OBJID로 MBOM 파트 목록 조회 -->
|
||||
<select id="getMbomPartListByProjectNo" parameterType="map" resultType="map">
|
||||
SELECT PM.OBJID AS CODE
|
||||
, PM.PART_NO || ' - ' || PM.PART_NAME AS NAME
|
||||
, PM.OBJID AS CODE_ID
|
||||
, PM.PART_NO || ' - ' || PM.PART_NAME AS CODE_NAME
|
||||
, PM.PART_NO
|
||||
, PM.PART_NAME
|
||||
FROM MBOM_DETAIL MD
|
||||
INNER JOIN MBOM_HEADER MH ON MH.OBJID = MD.MBOM_HEADER_OBJID
|
||||
INNER JOIN PROJECT_MGMT PJ ON PJ.OBJID = MH.PROJECT_OBJID
|
||||
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = MD.PART_OBJID
|
||||
WHERE PJ.OBJID = #{PROJECT_NO}
|
||||
ORDER BY PM.PART_NO
|
||||
<choose>
|
||||
<when test="PROJECT_NO != null and PROJECT_NO != ''">
|
||||
SELECT PM.OBJID AS CODE
|
||||
, PM.PART_NO || ' - ' || PM.PART_NAME AS NAME
|
||||
, PM.OBJID AS CODE_ID
|
||||
, PM.PART_NO || ' - ' || PM.PART_NAME AS CODE_NAME
|
||||
, PM.PART_NO
|
||||
, PM.PART_NAME
|
||||
FROM MBOM_DETAIL MD
|
||||
INNER JOIN MBOM_HEADER MH ON MH.OBJID = MD.MBOM_HEADER_OBJID
|
||||
INNER JOIN PROJECT_MGMT PJ ON PJ.OBJID = MH.PROJECT_OBJID
|
||||
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = MD.PART_OBJID
|
||||
WHERE PJ.OBJID = #{PROJECT_NO}
|
||||
ORDER BY PM.PART_NO
|
||||
</when>
|
||||
<otherwise>
|
||||
SELECT PM.OBJID AS CODE
|
||||
, PM.PART_NO || ' - ' || PM.PART_NAME AS NAME
|
||||
, PM.OBJID AS CODE_ID
|
||||
, PM.PART_NO || ' - ' || PM.PART_NAME AS CODE_NAME
|
||||
, PM.PART_NO
|
||||
, PM.PART_NAME
|
||||
FROM PART_MNG PM
|
||||
WHERE PM.STATUS = 'release'
|
||||
ORDER BY PM.PART_NO
|
||||
</otherwise>
|
||||
</choose>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user