Compare commits

...

2 Commits

@ -10,14 +10,15 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@Slf4j
@ -55,4 +56,18 @@ public class MinwonWaitController {
return ApiResponseUtil.successWithGrid(result, waitDto);
}
@PostMapping("/minwon/wait/waitanswerupdate.ajax")
@ResponseBody
public Map<String, Object> updateWaitAnswer(@RequestBody MinwonWaitDto.Request.cpAnswerasTextUpdate dto) {
Map<String, Object> result = new HashMap<>();
try {
minwonWaitService.answerastextUpdateMybatis(dto);
result.put("status", "success");
} catch (Exception e) {
e.printStackTrace();
result.put("status", "fail");
result.put("message", e.getMessage());
}
return result;
}
}

@ -2,6 +2,7 @@ package go.kr.project.biz.minwon.wait.dto;
import go.kr.project.system.common.model.PagingVO;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@ -14,6 +15,12 @@ public class MinwonWaitDto {
private String mmDlgb;
}
@Data
public static class cpAnswerasTextUpdate {
private String asMmcode;
private String asText;
}
}
public static class Response {
@ -27,7 +34,7 @@ public class MinwonWaitDto {
private String mmSgtel;
private String mmDate;
private String asLimitDt;
private String mmIndt;
private String asJsdate;
private String asJsno;
private String mmCarno;
private String ccCause;

@ -8,4 +8,6 @@ import java.util.List;
@Mapper
public interface MinwonWaitMapper {
List<MinwonWaitDto.Response.cpMainAnswerCancel> findminwonwaitSearchMybatis(MinwonWaitDto.Request.Search waitDto, String searchKeyword);
void answerastextUpdateMybatis(MinwonWaitDto.Request.cpAnswerasTextUpdate dto);
}

@ -8,4 +8,6 @@ import java.util.List;
public interface MinwonWaitService {
List<MinwonWaitDto.Response.cpMainAnswerCancel> findminwonwaitSearchMybatis(MinwonWaitDto.Request.Search waitDto, String searchKeyword);
void answerastextUpdateMybatis(MinwonWaitDto.Request.cpAnswerasTextUpdate dto);
}

@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
@Service
@ -37,4 +38,10 @@ public class MinwonWaitServiceImpl implements MinwonWaitService {
return result;
}
@Override
@Transactional
public void answerastextUpdateMybatis(MinwonWaitDto.Request.cpAnswerasTextUpdate dto) {
minwonWaitMapper.answerastextUpdateMybatis(dto);
}
}

@ -13,9 +13,9 @@
, answer.AS_BBS_NO
, main.MM_SGNM
, main.MM_SGTEL
, answer.AS_JSDATE
, main.MM_DATE
, answer.AS_LIMIT_DT
, main.MM_INDT
, answer.AS_JSNO
, main.MM_CARNO
, cancel.CC_CAUSE
@ -34,5 +34,12 @@
</select>
<update id="answerastextUpdateMybatis"
parameterType="go.kr.project.biz.minwon.wait.dto.MinwonWaitDto$Request$cpAnswerasTextUpdate">
UPDATE cp_answer
SET AS_TEXT = #{asText},
AS_STATE_DT = DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
WHERE AS_MMCODE = #{asMmcode}
</update>
</mapper>

@ -60,7 +60,10 @@
</div>
</div>
</div>
<div id="popupDiv" style="display:none;">
<!-- 민원 내용 보기 -->
<div id="popup_Minwon_View_Div" style="display:none;">
<ul style="background-color:rgb(173,216,115); border-style:solid; border-width:1px; width:100%; height:60px">
<table style="width:100%; height:60px;">
<tr>
@ -76,15 +79,15 @@
<tr style="width:100%; height:50%;">
<td style="width: 50px;">&nbsp;</td>
<td style="width: 60px; font-size:12px; text-align:right;">목록번호&nbsp;&nbsp;</td>
<td style="width:140px;">
<td style="width:200px;">
<input type="text" name="m_BbsNo" id="m_BbsNo" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
</td>
<td style="width: 60px; font-size:12px; text-align:right;">신청자&nbsp;&nbsp;</td>
<td style="width:140px;">
<td style="width:200px;">
<input type="text" name="m_Sgnm" id="m_Sgnm" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
</td>
<td style="width: 60px; font-size:12px; text-align:right;">전화번호&nbsp;&nbsp;</td>
<td style="width:140px;">
<td style="width:200px;">
<input type="text" name="m_Tel" id="m_Tel" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
</td>
<td style="width: 50px;">&nbsp;</td>
@ -110,7 +113,58 @@
<ul style="border-style:solid; border-width:1px; width:100%; height:400px;" >
<textarea id="minwon_view" name="minwon_view" style="font-size:12px; width:100%; height:100%; border-style:none;" readonly></textarea>
</ul>
<ul style="background-color:rgb(226,230,233); border-style:solid; border-width:1px; height:30px;" >
<table style="width:100%; height:100%;">
<tr style="height:100%;">
<td style="width: 50px;">&nbsp;</td>
<td style="width: 60px; height:100%; text-align:right; font-size:12px;">접수경로&nbsp;&nbsp;</td>
<td style="width:790px;">
<input type="text" name="m_Ingb" id="m_Ingb" style="width:140px; height:20px; background-color:rgb(239,248,139); font-size:13px; border-style:none;" readonly>
</td>
</tr>
</table>
</ul>
</div>
<!-- 민원 내용 보기 끝-->
<!-- 답변 미리보기 -->
<div id="popup_Answer_Preview_Div" id="popup_Minwon_View_Div" style="display:none;">
<ul style="background-color:rgb(173,216,115); border-style:solid; border-width:1px; width:100%; height:60px">
<table style="width:100%; height:60px;">
<tr>
<td id="variable_td" style="width:80%; height:100%; text-align:center; font-weight: bold; font-size:20px">민원 답변내용</td>
<td style="width:20%; text-align:center;">
<button type="button" id="preview_close_btn" class="newbtnss bg1">닫기</button>
<input type="hidden" id="preview_mmCode" name="preview_mmCode" value="">
</td>
</tr>
</table>
</ul>
<ul style="background-color:rgb(226,230,233); border-style:solid; border-width:1px; width:100%; height:20px; font-size:14px;">민원내용</ul>
<ul style="border-style:solid; border-width:1px; width:100%; height:240px;">
<textarea id="preview_minwon_mmText" name="preview_minwon_mmText" style="font-size:12px; width:100%; height:100%; border-style:none;" readonly></textarea>
</ul>
<ul style="background-color:rgb(226,230,233); border-style:solid; border-width:1px; width:100%; height:20px; font-size:14px;">
답변내용
</ul>
<ul style="border-style:solid; border-width:1px; width:100%; height:240px;">
<textarea id="preview_answer_asText" name="preview_answer_asText" maxlength="1000" style="font-size:12px; width:100%; height:100%; border-style:none;"></textarea>
</ul>
<ul style="background-color:rgb(226,230,233); border-style:none; border-width:1px; width:100%; height:50px">
<table style="width:100%; height:100%;">
<tr style="height:100%;">
<td style="width: 50px;">&nbsp;</td>
<td style="width:200px; height:100%; text-align:left; font-size:13px;">변경 할 내용이 있으면 수정하시오.</td>
<td style="width:150px;">
<button type="button" id="answer_save_btn" class="newbtnss bg1">내용 수정</button>
</td>
</tr>
</table>
</ul>
</div>
<!-- 답변 미리보기 끝 -->
<!-- /Main body -->
<script type="text/javascript">
@ -131,6 +185,9 @@
let selectRow_Jsno = null;
let selectRow_mmText = null;
let selectRow_asText = null;
let selectRow_asIngb = null;
let dataRow = null;
// 검색정보 셋팅
let setSearchCond = function() {
@ -141,7 +198,6 @@
const fnBiz = {
init: () => {
initGrid();
},
@ -184,7 +240,7 @@
{header: '번호', name: 'asBbsNo', sortable: true, width: 50,},
{header: '신고자', name: 'mmSgnm', sortable: true, width: 80,},
{header: '전화번호', name: 'asTel', width: 100,},
{header: '접수일자', name: 'mmDate', sortable: true, width: 70,},
{header: '접수일자', name: 'asJsdate', sortable: true, width: 70,},
{header: '처리기한', name: 'asLimitDt', sortable: true, width: 70,},
{header: '위반일자', name: 'mmDate', sortable: true, width: 120,},
{header: '접수번호', name: 'asJsno', sortable: true, width: 150,},
@ -215,7 +271,7 @@
const gridOptions = {
el: 'grid',
rowHeaders: ['checkbox'],
rowHeaders: [{ type: 'rowNum', header: 'NO' }],
columns: gridColumns,
noData: "조회된 대기자료가 없습니다.",
pageOptions: {
@ -225,7 +281,6 @@
};
GRID = TuiGrid.of(gridOptions, gridDatasource, (res) => {
GRID.on("dblclick", (e) => {
var popUrl = '/total/info.do';
var popTitle = "TotaInfo";
@ -250,13 +305,25 @@
});
GRID.on("click", (e) => {
selectRow_mmCode = null;
selectRow_BbsNo = null;
selectRow_Sgnm = null;
selectRow_Tel = null;
selectRow_Jsdate = null;
selectRow_LimitDt = null;
selectRow_Jsno = null;
selectRow_asIngb = null;
selectRow_mmText = null;
selectRow_asText = null;
selectRow_mmCode = e.instance.getValue(e.rowKey, 'mmCode');
selectRow_BbsNo = e.instance.getValue(e.rowKey, 'asBbsNo');
selectRow_Sgnm = e.instance.getValue(e.rowKey, 'mmSgnm');
selectRow_Tel = e.instance.getValue(e.rowKey, 'asTel');
selectRow_Jsdate = e.instance.getValue(e.rowKey, 'mmDate');
selectRow_Jsdate = e.instance.getValue(e.rowKey, 'asJsdate');
selectRow_LimitDt = e.instance.getValue(e.rowKey, 'asLimitDt');
selectRow_Jsno = e.instance.getValue(e.rowKey, 'asJsno');
selectRow_asIngb = e.instance.getValue(e.rowKey, 'asIngb');
selectRow_mmText = e.instance.getValue(e.rowKey, 'mmText');
selectRow_asText = e.instance.getValue(e.rowKey, 'asText');
});
@ -266,10 +333,8 @@
// 레디펑션
$(function () {
fnBiz.init();
fnBiz.eventListener();
});
$('#view_btn').on('click', function() {
@ -281,28 +346,64 @@
document.getElementById('m_LimitDt').value = selectRow_LimitDt;
document.getElementById('m_Jsno').value = selectRow_Jsno;
document.getElementById('minwon_view').value = selectRow_mmText;
document.getElementById('m_Ingb').value = selectRow_asIngb;
var popupDiv = document.getElementById('popupDiv');
popupDiv.style = 'display:inline-block; position:absolute; top:200px; left:350px; z-index:999999; background-color:rgb(226,230,233); width:900px; height:400px;';
var popup_Minwon_View_Div = document.getElementById('popup_Minwon_View_Div');
popup_Minwon_View_Div.style = 'display:inline-block; position:absolute; top:100px; left:350px; z-index:999999; background-color:rgb(226,230,233); width:900px; height:400px;';
}
});
$('#view_close_btn').on('click', function() {
var popupDiv = document.getElementById('popupDiv');
popupDiv.style = 'display:none;';
var popup_Minwon_View_Div = document.getElementById('popup_Minwon_View_Div');
popup_Minwon_View_Div.style = 'display:none;';
});
$('#preview_btn').on('click', function() {
if (selectRow_mmCode != null && selectRow_mmCode != '') {
document.getElementById('variable_td').innerHTML = '민원 답변내용 (' + selectRow_Jsno + ')';
document.getElementById('preview_mmCode').value = selectRow_mmCode;
document.getElementById('preview_minwon_mmText').value = selectRow_mmText;
document.getElementById('preview_answer_asText').value = selectRow_asText;
var popup_Answer_Preview_Div = document.getElementById('popup_Answer_Preview_Div');
popup_Answer_Preview_Div.style = 'display:inline-block; position:absolute; top:100px; left:350px; z-index:999999; background-color:rgb(226,230,233); width:900px; height:400px;';;
}
});
$('#preview_btn').on('click', function() {
alert('답변내용 미리보기 클릭')
/*
const popUrl = '${pageContext.request.contextPath}/minwon/dayanswer/dayanswerregister.do';
const popTitle = '자료 등록';
const popOption = 'width=700,height=600,resizable=yes,scrollbars=yes';
window.open(popUrl, popTitle, popOption);
*/
$('#preview_close_btn').on('click', function() {
var popup_Answer_Preview_Div = document.getElementById('popup_Answer_Preview_Div');
popup_Answer_Preview_Div.style = 'display:none;';
});
$('#answer_save_btn').on('click', function() {
if (confirm('답변 내용을 저장 하시겠습니까?')){
var answer_save_Data = {
asMmcode: $('#preview_mmCode').val(),
asText: $('#preview_answer_asText').val()
};
$.ajax(
{
url: '/minwon/wait/waitanswerupdate.ajax',
type: 'POST',
contentType: 'application/json; charset=UTF-8',
data: JSON.stringify(answer_save_Data),
success: function (data) {
document.getElementById('search_btn').click();
document.getElementById('preview_close_btn').click();
alert('답변 내용이 수정 되였습니다.');
},
error: function (data) {
console.log('답변 수정 실패 : ', data.responseText);
alert('답변 수정에 실패하였습니다.')
}
}
)
} else {
alert('저장을 취소했습니다.');
}
});
</script>

Loading…
Cancel
Save