Files
vexplor/WebContent/WEB-INF/view/part/tempPartList.jsp
2025-08-21 09:41:46 +09:00

561 lines
18 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.pms.common.utils.*"%>
<%@include file="/init.jsp"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title><%=Constants.SYSTEM_NAME%></title>
<c:set var="search_oem" value="${empty param.search_oem ? '' : param.search_oem}" />
<c:set var="search_car" value="${empty param.search_car ? '' : param.search_car}" />
<script>
$(function(){
$(document).ready(function(){
fnc_datepick();
getCarList("${search_oem}","${search_car}");
getChangeProductList("search_product","${param.search_productFamily}","${param.search_product}");
$("input[type=text]").keyup(function(e){
if(e.keyCode == 13) search();
});
//image src encoding
$("img").each(function(i){
var imgSrc = $(this).attr("data-SRC");
$(this).attr("src", encodeURI(imgSrc));
});
$("input[name=partCheckBox]").click(function(){
var partChk = $("input[name=partCheckBox]");
if(partChk.not(":checked")) {
$("#allCheck").attr('checked',false);
}
});
});
});
function search(){
var form = document.form1;
$("#search_partNo").val($.trim($("#search_partNo").val()));
$("#search_partName").val($.trim($("#search_partName").val()));
form.actionType.value = "";
form.target = "_self";
form.action = "/part/tempPartList.do";
form.submit();
}
function excelExport(){
var form = document.form1;
form.target = "_self";
form.actionType.value = "excel";
form.action = "/part/tempPartList.do";
form.submit();
}
//파트 상세 또는 입력 화면을 출력한다.
function openPartFormPopup(actionType,objid,writer){
var hiddenForm = document.hiddenForm;
var url = "/part/partFormPopup.do";
var target = "tempPartListPopup";
if("" != objid){
url = "/part/partDetailViewPopup.do";
target = objid;
}
if("${userId}" == writer){
url = "/part/partFormPopup.do";
}
window.open(url,target,"width=720, height=800, menubars=no, scrollbars=yes, resizable=yes");
hiddenForm.action = url;
hiddenForm.actionType.value = actionType;
hiddenForm.objid.value = objid;
hiddenForm.target = target;
hiddenForm.submit();
}
//선택된 파트의 상태를 변경한다.
function changePartStatus(){
var form = document.form1;
var partLength = $("input[name=partCheckBox]:checked").length;
if(0 < partLength){
var validateFlag = true;
$("input[name=partCheckBox]:checked").each(function(){
var rev = fnc_checkNull($(this).attr("data-REV").replace(" ",""));
if(rev == ""){
validateFlag = false;
}
});
if(!validateFlag){
Swal.fire("Rev가 입력되지 않은 Part는 확정할 수 없습니다.");
}else{
if(confirm("해당파트를 확정하시겠습니까?")){
form.status.value="complete";
var param = $("#form1").serialize();
$.ajax({
type : "POST",
url : "/part/changeMultiPartStatus.do",
data: param,
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
Swal.fire(result.message);
search();
self.close();
}
}
});
}
}
}else{
Swal.fire("선택된 파트가 없습니다.");
}
}
//Excel Upload
function openPartExcelImportPopUp(){
window.open("/part/openPartExcelImportPopUp.do","excelImportPopUp","width=1300, height=800");
}
//전체 체크
function fn_allChk(obj){
var checked = $(obj).is(":checked");
$("input[name=partCheckBox]").each(function(){
if(checked) this.checked = true;
else this.checked = false;
});
}
//작성중에 해당하는 파트를 삭제한다.
function deletePart(){
var partLength = $("input[name=partCheckBox]:checked").length;
if(0 < partLength){
var checkCnt = 0;
$("input[name=partCheckBox]:checked").each(function(){
var partObjId = this.value;
var status = $("input[name="+partObjId+"_status]").val();
if(status != "create"){
checkCnt++;
Swal.fire("작성중인 Part만 삭제 가능합니다.");
return false;
}
});
if(checkCnt == 0){
var param = $("#form1").serialize();
if(confirm("선택된 파트를 삭제하시겠습니까?")){
$.ajax({
type : "POST",
url : "/part/deletePart.do",
data: param,
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
Swal.fire(result.message);
search();
}
}
});
}
}
}else{
Swal.fire("선택된 파트가 없습니다.");
}
}
function openImagePopUp(url){
var img=new Image();
img.src=url;
var img_width=img.width;
var img_height=img.height;
var win_width=img.width+25;
var height=img.height+30;
window.open(url,"partListShapeImgPopUp","width="+img_width+",height="+height+", menubars=no, scrollbars=yes, resizable=yes'");
}
function getCarList(oemObjid,carObjid){
var carSelectObj = $("#car_objid");
$(carSelectObj).find("option").remove();
$(carSelectObj).append("<option value=''>선택</option>");
if("" == oemObjid || null == oemObjid){
return false;
}else{
$.ajax({
type : "POST",
url : "/admin/getOEMsCarList.do",
data:{ "status" : "active" , "oemObjId" : oemObjid},
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
for(var i=0;i<result.length;i++){
var objid = result[i].OBJID;
var carName = result[i].CAR_NAME;
var carCode = result[i].CAR_CODE;
$(carSelectObj).append("<option value='"+objid+"'>"+carCode+"</option>");
}
if("" != carObjid){
$(carSelectObj).val(carObjid);
}
}
}
});
}
}
function getChangeProductList(areaObjId,productGroupObjId,targetProductObjId){
$("#"+areaObjId).find("option").remove();
$("#"+areaObjId).append("<option value=''>선택</option>");
if("" != productGroupObjId && null != productGroupObjId){
$.ajax({
type : "POST",
/* url : "/common/getProductList_combo.do", */
url : "/specData/getProductList.do",
/* data:{"search_productGroupObjId" : productGroupObjId, "isJson":true}, */
data:{"productGroupObjid" : productGroupObjId , "status" : "active"},
dataType:"json",
async:false,
error: function(jqxhr, status, error){
/* Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText); */
//파트 제품군 셀렉트 변경시 이상 오류 발생
},
success: function(result){
if(null != result){
for(var i=0;i<result.length;i++){
var resultAppendText = "";
var productName = result[i].PRODUCT_NAME;
var selectedFlag = "";
if(targetProductObjId == result[i].OBJID){
selectedFlag = "selected";
}
resultAppendText="<option value='"+result[i].OBJID+"' "+selectedFlag+">"+productName+"</option>";
$("#"+areaObjId).append(resultAppendText);
}
}
}
});
}
}
/* //선택된 Part의 정보를 통해
function fn_drawingConversion(){
var form = document.form1;
var partLength = $("input[name=partCheckBox]:checked").length;
if(0 < partLength){
if(confirm("Part에 첨부된 도면의 용량에 따라 시간이 오래 걸릴 수 있습니다.\n선택된 Part의 도면을 변환 하시겠습니까?")){
form.actionType.value="drawingConversion";
var param = $("#form1").serialize();
$.ajax({
type : "POST",
url : "/common/conversionDrawing.do",
data: param,
dataType:"json",
async:false,
error: function(jqxhr, status, error){
Swal.fire(jqxhr.statusText + ", " + status + ", " + error);
Swal.fire(jqxhr.status);
Swal.fire(jqxhr.responseText);
},
success: function(result){
if(null != result){
Swal.fire(result.message);
search();
}
}
});
}
}else{
Swal.fire("선택된 파트가 없습니다.");
}
} */
</script>
</head>
<body class="backcolor">
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="actionType" id="actionType">
<input type="hidden" name="objid" id="objid">
</form>
<form name="form1" id="form1" method="post">
<input type="hidden" name="actionType" id="actionType">
<input type="hidden" name="status" id="status">
<section class="min_part_enroll" style="min-width:2000px;">
<div class="plm_menu_name">
<h2>
<span>Part 등록</span>
</h2>
</div>
<div id="plmSearchZon">
<table>
<tbody>
<tr>
<td class="align_r">
<label for="" class="">고객사</label>
</td>
<td>
<select name="search_oem" id="search_oem" onchange="getCarList(this.value,'${param.search_car}')">
<c:choose>
<c:when test="${empty oemList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${oemList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq param.search_oem ? 'selected':''}>${item.OEM_NAME}(${item.OEM_CODE})</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td class="align_r">
<label for="" class="car_objid">차종</label>
</td>
<td>
<select name="car_objid" id="car_objid">
<option value="">전체</option>
</select>
</td>
<td class="align_r">
<label for="" class="">제품군</label>
</td>
<td>
<select name="search_productFamily" id="search_productFamily" onchange="getChangeProductList('search_product',this.value,'${param.search_product}')">
<c:choose>
<c:when test="${empty productGroupList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${productGroupList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq param.search_productFamily ? 'selected':''}>${item.PRODUCT_GROUP_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<td class="align_r">
<label for="" class="">제품</label>
</td>
<td>
<select name="search_product" id="search_product">
<option value="">선택</option>
</select>
</td>
<td class="align_r">
<label for="" class="">품번</label>
</td>
<td>
<input type="text" name="search_partNo" id="search_partNo" value="${param.search_partNo}"/>
</td>
<td class="align_r">
<label for="" class="">품명</label>
</td>
<td colspan="3">
<input type="text" name="search_partName" id="search_partName" value="${param.search_partName}"/>
</td>
</tr>
<tr>
<td class="align_r">
<label for="" class="">재질</label>
</td>
<td>
<select name="search_material" id="search_material">
<c:choose>
<c:when test="${empty materialList}">
<option value="">선택</option>
</c:when>
<c:otherwise>
<option value="">선택</option>
<c:forEach var="item" items="${materialList}" varStatus="varStatus">
<option value="${item.OBJID}" ${item.OBJID eq param.search_material ? 'selected':''}>${item.MATERIAL_NAME}</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
</td>
<%-- <td class="align_r">
<label for="" class="">원소재사이즈 </label>
</td>
<td>
<input type="text" id="search_thickness" name="search_thickness" value="${param.search_thickness}">
</td> --%>
<td class="align_r">
<label for="" class="">출도구분</label>
</td>
<td>
<select name="search_drawReleaseType" id="search_drawReleaseType">
<option value="" ${'' eq param.search_drawReleaseType ? 'selected':''}>전체</option>
<option value="dev" ${'dev' eq param.search_drawReleaseType ? 'selected':''}>개발</option>
<option value="product" ${'product' eq param.search_drawReleaseType ? 'selected':''}>양산</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contents_page_basic_margin">
<div class="btn_wrap">
<div class="plm_btn_wrap">
<input type="button" value="조회" class="plm_btns" onclick="search();">
<input type="button" value="Part 등록" name="" id="" class="plm_btns" onclick="javascript:openPartFormPopup('regist','','')">
<input type="button" value="Part 삭제" name="" id="" class="plm_btns" onclick="javascript:deletePart()">
<input type="button" value="확정" class="plm_btns" onclick="changePartStatus();">
<!-- <input type="button" value="변환" class="plm_btns" onclick="fn_drawingConversion();"> -->
<input type="button" value="Excel Download" name="" id="" class="plm_btns" onclick="excelExport();">
<!-- <input type="button" value="Excel Upload" name="" id="" class="plm_btns" onclick="openPartExcelImportPopUp();"> -->
</div>
</div>
<div class="plm_table_wrap">
<table class="plm_table" style="width:100%;">
<colgroup>
<col width="1%">
<col width="2%">
<col width="4%">
<col width="13%"> <!-- 품명 -->
<col width="4%">
<col width="4%"> <!-- ECO-No -->
<col width="3%">
<col width="2%">
<col width="2%">
<col width="2%"> <!-- ERP -->
<col width="10%"> <!-- 재질 -->
<col width="4%">
<col width="8%"> <!-- 도금 -->
<col width="3%">
<col width="3%">
<col width="3%">
<col width="3%"> <!-- 상태 -->
</colgroup>
<thead>
<tr class="plm_thead">
<td rowspan="2"><input type="checkbox" name="" value="" id="allCheck" class="checkBox" onclick="fn_allChk(this);"></td>
<td rowspan="2">No</td>
<td rowspan="2">품번</td>
<td rowspan="2">품명</td>
<td rowspan="2">형상</td>
<td colspan="4">ECO</td>
<td rowspan="2">ERP</td>
<td rowspan="2">재질</td>
<td rowspan="2">원소재사이즈</td>
<td rowspan="2">도금</td>
<td colspan="2">중량</td>
<td rowspan="2">등록일</td>
<td rowspan="2">상태</td>
</tr>
<tr class="plm_sub_thead">
<td>No</td>
<td>Date</td>
<td>REV</td>
<td>ECD</td>
<td>제품</td>
<td>스푸르</td>
</tr>
</thead>
<c:choose>
<c:when test="${empty partList}">
<tr style="text-align:center;">
<td align="center" colspan="17">조회된 데이터가 없습니다.</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="item" items="${partList}" varStatus="varStatus">
<tr>
<input type="hidden" name="${item.OBJID}_status" value="${item.STATUS}" >
<td><input type="checkbox" name="partCheckBox" value="${item.OBJID}" data-REV="${item.REV}" data-PART_NO="${item.PART_NO}"></td>
<td>${item.RNUM}</td>
<td title="${item.PART_NO}"><a href="#" onclick="openPartFormPopup('','${item.OBJID}','${item.WRITER}')">${item.PART_NO}</a></td>
<td title="${item.PART_NAME}"><a href="#" onclick="openPartFormPopup('','${item.OBJID}','${item.WRITER}')">${item.PART_NAME}</a></td>
<td>
<c:if test="${!empty item.SAVED_FILE_NAME and !empty item.REAL_FILE_NAME and !empty item.FILE_PATH}">
<img src="#" height='100' width='100' onclick="openImagePopUp(this.src)" data-SRC="/common/viewImage.do?realFileName=${item.REAL_FILE_NAME}&savedFileName=${item.SAVED_FILE_NAME}&attDir=${item.FILE_PATH}"/>
</c:if>
</td>
<td>${item.EO_NO}</td>
<td>${item.EO_ISSUE_DATE_TITLE}</td>
<td>${item.REV}</td>
<td>
<c:choose>
<c:when test="${empty item.ECD_OBJID}">N</c:when>
<c:otherwise>
<a href="javascript:fnc_downloadFile('${item.ECD_OBJID}')">Y</a>
</c:otherwise>
</c:choose>
</td>
<td title="${item.RH_PART_NO}">${item.RH_PART_NO}</td>
<td>${item.MATERIAL_NAME}</td>
<%-- <td>
<c:choose>
<c:when test="${empty item.MNG_ITEM_FILE_OBJID}">N</c:when>
<c:otherwise>
<a href="javascript:fnc_downloadFile('${item.MNG_ITEM_FILE_OBJID}')">Y</a>
</c:otherwise>
</c:choose>
</td> --%>
<td>${item.THICKNESS}</td>
<td>${item.PLATED}</td>
<td>${item.WEIGHT}</td>
<td>${item.SPRUE}</td>
<td>${item.REGDATE}</td>
<td>${item.STATUS_STR}</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
</div>
</div>
</section>
</form>
</body>
</html>