고객cs관리 접수자, 조치자 직접 선택, 수량 필수값 제거 등

This commit is contained in:
2026-01-15 14:19:17 +09:00
parent cdb6c0a3fc
commit 6b2108e93c
6 changed files with 42 additions and 18 deletions

View File

@@ -22,8 +22,8 @@ String actionDate = CommonUtils.checkNull(info.get("action_date"));
if(actionDate.isEmpty()) actionDate = today;
// 조치자
String actionUserName = CommonUtils.checkNull(info.get("action_user_name"));
if(actionUserName.isEmpty()) actionUserName = connectUserName;
String actionUserId = CommonUtils.checkNull(info.get("action_user_id"));
if(actionUserId.isEmpty()) actionUserId = connectUserId;
%>
<!DOCTYPE html>
<html>
@@ -56,8 +56,10 @@ $(document).ready(function(){
// 기존 값 선택
var savedBlameDecision = "${info.blame_decision}";
var savedStatus = "${info.status}";
var savedActionUserId = "<%=actionUserId%>";
if(savedBlameDecision) $("#BLAME_DECISION").val(savedBlameDecision).trigger('change');
if(savedStatus) $("#STATUS").val(savedStatus).trigger('change');
if(savedActionUserId) $("#ACTION_USER_ID").val(savedActionUserId).trigger('change');
// 뷰 모드일 경우 입력 필드 비활성화
if(isViewMode){
@@ -336,7 +338,7 @@ function fn_save(){
<td class="input_title"><label>접수일</label></td>
<td>${info.receipt_date}</td>
<td class="input_title"><label>접수자</label></td>
<td>${info.writer_name}</td>
<td>${info.receipt_user_name}</td>
</tr>
<tr>
<td class="input_title"><label>고객사</label></td>
@@ -432,7 +434,10 @@ function fn_save(){
</td>
<td class="input_title"><label>조치자 <span style="color:red;">*</span></label></td>
<td>
<input type="text" name="ACTION_USER_NAME" id="ACTION_USER_NAME" value="<%=actionUserName%>" readonly>
<select name="ACTION_USER_ID" id="ACTION_USER_ID" class="select2" required reqTitle="조치자" type="select" style="width:100%;">
<option value="">선택</option>
${code_map.user_cd}
</select>
</td>
</tr>
<tr>

View File

@@ -22,8 +22,8 @@ if(objId.isEmpty()){
}
// 접수자/작성자
String writerName = CommonUtils.checkNull(info.get("writer_name"));
if(writerName.isEmpty()) writerName = connectUserName;
String receiptUserId = CommonUtils.checkNull(info.get("receipt_user_id"));
if(receiptUserId.isEmpty()) receiptUserId = connectUserId;
%>
<!DOCTYPE html>
<html>
@@ -43,8 +43,10 @@ $(document).ready(function(){
// 수정 모드인 경우 기존 값 선택
var savedBlameDecision = "${info.blame_decision}";
var savedStatus = "${info.status}";
var savedWriter = "<%=receiptUserId%>";
if(savedBlameDecision) $("#BLAME_DECISION").val(savedBlameDecision).trigger('change');
if(savedStatus) $("#STATUS").val(savedStatus).trigger('change');
if(savedWriter) $("#RECEIPT_USER_ID").val(savedWriter).trigger('change');
// 저장
@@ -147,9 +149,12 @@ function fn_save(){
<td>
<input type="text" name="RECEIPT_DATE" id="RECEIPT_DATE" class="date_icon" required reqTitle="접수일" value="${info.receipt_date}">
</td>
<td class="input_title"><label>접수자</label></td>
<td class="input_title"><label>접수자 <span style="color:red;">*</span></label></td>
<td>
<input type="text" id="ACTION_USER_NAME" value="<%=writerName%>" readonly>
<select name="RECEIPT_USER_ID" id="RECEIPT_USER_ID" class="select2" required reqTitle="접수자" type="select" style="width:100%;">
<option value="">선택</option>
${code_map.user_cd}
</select>
</td>
</tr>
<tr>
@@ -162,9 +167,9 @@ function fn_save(){
</td>
</tr>
<tr>
<td class="input_title"><label>수량 <span style="color:red;">*</span></label></td>
<td class="input_title"><label>수량</label></td>
<td>
<input type="text" name="QTY" id="QTY" value="${info.qty}" required reqTitle="수량">
<input type="text" name="QTY" id="QTY" value="${info.qty}" reqTitle="수량">
</td>
<td class="input_title"><label>제품구분 <span style="color:red;">*</span></label></td>
<td>
@@ -224,7 +229,7 @@ function fn_save(){
<tr>
<td class="input_title"><label>이슈내용 <span style="color:red;">*</span></label></td>
<td colspan="3">
<textarea name="COMPLAINT_CONTENT" id="COMPLAINT_CONTENT" rows="3" style="width:100%;" required reqTitle="불만내용" type="text">${info.complaint_content}</textarea>
<textarea name="COMPLAINT_CONTENT" id="COMPLAINT_CONTENT" rows="3" style="width:100%;" required reqTitle="이슈내용" type="text">${info.complaint_content}</textarea>
</td>
</tr>
</table>

View File

@@ -103,7 +103,7 @@ var columns = [
{headerHozAlign:'center', hozAlign:'right', minWidth:70, widthGrow:1, title:'수량', field:'QTY',
formatter:"money", formatterParams:{thousand:",", precision:false}
},
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'접수자', field:'WRITER_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'접수자', field:'RECEIPT_USER_NAME'},
//{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'모델명', field:'MODEL_NAME'},
//{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품명', field:'PART_NAME'},

View File

@@ -798,7 +798,9 @@ public class QualityController {
// 고객사
code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("customer_objid")), "common.getClientMngSupplySelect"));
// 제품구분
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("product_type")), "common.getCodeselect"));
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("product_type")), "common.getCodeselect"));
// 접수자 (사용자 목록)
code_map.put("user_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("receipt_user_id")), "common.getUserselect"));
} catch(Exception e) {
e.printStackTrace();
}
@@ -828,6 +830,8 @@ public class QualityController {
info = service.getCustomerCsInfo(paramMap);
// 조치구분
code_map.put("action_type", commonService.bizMakeOptionList("0001835", CommonUtils.nullToEmpty((String)info.get("action_type")), "common.getCodeselect"));
// 조치자 (사용자 목록)
code_map.put("user_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("action_user_id")), "common.getUserselect"));
} catch(Exception e) {
e.printStackTrace();
}

View File

@@ -1938,13 +1938,15 @@
, CODE_NAME(CCS.ACTION_TYPE) AS ACTION_TYPE_NAME
, CCS.ACTION_CONTENT
, CCS.BLAME_DECISION
, CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME
, CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' WHEN 'E' THEN '단순문의' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME
, CCS.STATUS
, CCS.REMARK
, CCS.ACTION_DATE
, CCS.ACTION_USER_ID
, CCS.WRITER
, USER_NAME(CCS.WRITER) as WRITER_NAME
, CCS.RECEIPT_USER_ID
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.RECEIPT_USER_ID) AS RECEIPT_USER_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_IMAGE' AND STATUS = 'Active') AS IMAGE_FILE
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_ACTION' AND STATUS = 'Active') AS ATTACH_FILE
@@ -2033,6 +2035,8 @@
, CCS.ATTACH_FILE_OBJID
, CCS.WRITER
, USER_NAME(CCS.WRITER) AS WRITER_NAME
, CCS.RECEIPT_USER_ID
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.RECEIPT_USER_ID) AS RECEIPT_USER_NAME
, TO_CHAR(CCS.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
FROM CUSTOMER_CS CCS
WHERE CCS.OBJID = #{OBJID}
@@ -2069,6 +2073,7 @@
, STATUS
, REMARK
, WRITER
, RECEIPT_USER_ID
, REG_DATE
) VALUES (
#{OBJID}
@@ -2090,6 +2095,7 @@
, #{STATUS}
, #{REMARK}
, #{WRITER}
, #{RECEIPT_USER_ID}
, NOW()
)
</insert>
@@ -2110,6 +2116,7 @@
, SERIAL_NO = #{SERIAL_NO}
, MANUFACTURER = #{MANUFACTURER}
, COMPLAINT_CONTENT = #{COMPLAINT_CONTENT}
, RECEIPT_USER_ID = #{RECEIPT_USER_ID}
, MOD_DATE = NOW()
WHERE OBJID = #{OBJID}
</update>

View File

@@ -1585,10 +1585,13 @@ public class QualityService extends BaseService{
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
PersonBean person = (PersonBean) request.getSession().getAttribute(Constants.PERSON_BEAN);
String actionUserId = person != null ? person.getUserId() : "";
paramMap.put("ACTION_USER_ID", actionUserId);
// 조치자가 선택되지 않은 경우에만 접속자 ID 사용
String actionUserId = CommonUtils.checkNull(paramMap.get("ACTION_USER_ID"));
if(actionUserId.isEmpty()){
PersonBean person = (PersonBean) request.getSession().getAttribute(Constants.PERSON_BEAN);
actionUserId = person != null ? person.getUserId() : "";
paramMap.put("ACTION_USER_ID", actionUserId);
}
sqlSession.update("quality.updateCustomerCsAction", paramMap);