Compare commits
No commits in common. "dd95fdf716ccf44abd1cce84f6935972c685e157" and "7e193e4b049822c8d4241ca97aaad733cd05201d" have entirely different histories.
dd95fdf716
...
7e193e4b04
|
|
@ -275,10 +275,9 @@ public class ManageListController {
|
||||||
|
|
||||||
strUtil sUtil = new strUtil();
|
strUtil sUtil = new strUtil();
|
||||||
String widthSize = sUtil.checkNull((String)params.get("width"));
|
String widthSize = sUtil.checkNull((String)params.get("width"));
|
||||||
String heightSize = "665";
|
String heightSize = "395";
|
||||||
String PROJECT_CODE = sUtil.checkNull((String)params.get("PROJECT_CODE"));
|
String PROJECT_CODE = sUtil.checkNull((String)params.get("PROJECT_CODE"));
|
||||||
String PROC = sUtil.checkNull((String)params.get("PROC"));
|
String PROC = sUtil.checkNull((String)params.get("PROC"));
|
||||||
ArrayList<?> MODI_ITEM_LIST = new ArrayList<>(); // "수정요청 대상" 체크 할 항목 조회
|
|
||||||
|
|
||||||
String MODEIFY_CALL_REASON = "";
|
String MODEIFY_CALL_REASON = "";
|
||||||
if ("view".equals(PROC)) {
|
if ("view".equals(PROC)) {
|
||||||
|
|
@ -286,11 +285,8 @@ public class ManageListController {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
MODEIFY_CALL_REASON = (sUtil.checkNull(result.get("modeifyCallReason").toString())).replaceAll("\n","<br>");
|
MODEIFY_CALL_REASON = (sUtil.checkNull(result.get("modeifyCallReason").toString())).replaceAll("\n","<br>");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
MODI_ITEM_LIST = masterService.selectModifyItem(params);
|
|
||||||
}
|
}
|
||||||
resultList.put("modeifyCallReason", MODEIFY_CALL_REASON);
|
resultList.put("modeifyCallReason", MODEIFY_CALL_REASON);
|
||||||
resultList.put("modiItemList", MODI_ITEM_LIST);
|
|
||||||
resultList.put("heightSize", heightSize);
|
resultList.put("heightSize", heightSize);
|
||||||
resultList.put("widthSize", widthSize);
|
resultList.put("widthSize", widthSize);
|
||||||
resultList.put("projectCode", PROJECT_CODE);
|
resultList.put("projectCode", PROJECT_CODE);
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,5 @@ public interface ManageListMapper {
|
||||||
public EgovMap updateModeifyTbl(HashMap<String,Object> params) throws Exception;
|
public EgovMap updateModeifyTbl(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public EgovMap updateModeifyUser(HashMap<String,Object> params) throws Exception;
|
public EgovMap updateModeifyUser(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItem(HashMap<String,Object> params) throws Exception;
|
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,4 @@ public interface ManageListService {
|
||||||
public EgovMap updateModeifyTbl(HashMap<String,Object> params) throws Exception;
|
public EgovMap updateModeifyTbl(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public EgovMap updateModeifyUser(HashMap<String,Object> params) throws Exception;
|
public EgovMap updateModeifyUser(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItem(HashMap<String,Object> params) throws Exception;
|
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,14 +57,4 @@ public class ManageListServiceImpl implements ManageListService {
|
||||||
return manageListMapper.updateModeifyUser(params);
|
return manageListMapper.updateModeifyUser(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArrayList<?> selectModifyItem(HashMap<String, Object> params) throws Exception {
|
|
||||||
return manageListMapper.selectModifyItem(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String, Object> params) throws Exception {
|
|
||||||
return manageListMapper.selectModifyItemBitmask(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -374,7 +374,6 @@ public class RegiController {
|
||||||
String PROJECT_CODE = files[k].toString();// 확인필요..데이터이름이 제대로 들어오는가?????
|
String PROJECT_CODE = files[k].toString();// 확인필요..데이터이름이 제대로 들어오는가?????
|
||||||
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
||||||
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
||||||
String MODIFY_ITEM = sUtil.checkNull(String.valueOf(params.get("MODIFY_ITEM")));
|
|
||||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||||
params.put("USERID", request.getSession().getAttribute("USERID"));//userid는 param 값 가져오는 지 확인.
|
params.put("USERID", request.getSession().getAttribute("USERID"));//userid는 param 값 가져오는 지 확인.
|
||||||
try {
|
try {
|
||||||
|
|
@ -554,7 +553,7 @@ public class RegiController {
|
||||||
// TEMP_MANAGE_STATE INSERT
|
// TEMP_MANAGE_STATE INSERT
|
||||||
params.put("STATE", "5");// 수정요청으로 변경
|
params.put("STATE", "5");// 수정요청으로 변경
|
||||||
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
||||||
params.put("MODIFY_ITEM", MODIFY_ITEM); // 변경
|
// 변경
|
||||||
affectRow += masterService.mergeStateInsertModeify(params);
|
affectRow += masterService.mergeStateInsertModeify(params);
|
||||||
|
|
||||||
// -------------------------------------------------------
|
// -------------------------------------------------------
|
||||||
|
|
@ -609,7 +608,6 @@ public class RegiController {
|
||||||
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||||
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
||||||
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
||||||
String MODIFY_ITEM = sUtil.checkNull(String.valueOf(params.get("MODIFY_ITEM")));
|
|
||||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||||
params.put("USERID", request.getSession().getAttribute("USERID"));
|
params.put("USERID", request.getSession().getAttribute("USERID"));
|
||||||
try {
|
try {
|
||||||
|
|
@ -770,8 +768,7 @@ public class RegiController {
|
||||||
// TEMP_MANAGE_STATE INSERT
|
// TEMP_MANAGE_STATE INSERT
|
||||||
params.put("STATE", "5");// 수정요청으로 변경
|
params.put("STATE", "5");// 수정요청으로 변경
|
||||||
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
||||||
params.put("MODIFY_ITEM", MODIFY_ITEM); // 변경
|
// 변경
|
||||||
|
|
||||||
affectRow += masterService.mergeStateInsertModeify(params);
|
affectRow += masterService.mergeStateInsertModeify(params);
|
||||||
|
|
||||||
// -------------------------------------------------------
|
// -------------------------------------------------------
|
||||||
|
|
@ -966,16 +963,7 @@ public class RegiController {
|
||||||
String smsId = "";
|
String smsId = "";
|
||||||
smsId = result.get("SMS_ID").toString();
|
smsId = result.get("SMS_ID").toString();
|
||||||
params.put("SMS_ID", smsId);
|
params.put("SMS_ID", smsId);
|
||||||
params.put("PROJECT_CODE", project_code);
|
|
||||||
params.put("REQ_GBN", reqGbn);
|
|
||||||
params.put("RET_CODE", retCode);
|
|
||||||
params.put("RET_MESSAGE", retMessage);
|
|
||||||
params.put("RET_LAST_POINT", retLastPoint);
|
|
||||||
params.put("SMS_TO_ID", sms_to_id);
|
|
||||||
params.put("SMS_TO_PHONE",sms_to_phone);
|
|
||||||
params.put("SMS_FROM_ID", sms_from_id);
|
|
||||||
params.put("SMS_FROM_PHONE", sms_from_phone);
|
|
||||||
params.put("SMS_MSG", sms_msg);
|
|
||||||
int affectRow = masterService.insertSmsLog(params);
|
int affectRow = masterService.insertSmsLog(params);
|
||||||
// PARAMSET
|
// PARAMSET
|
||||||
|
|
||||||
|
|
@ -1775,16 +1763,13 @@ public class RegiController {
|
||||||
ModelAndView mav, HttpServletRequest request, HttpServletResponse response)throws Exception {
|
ModelAndView mav, HttpServletRequest request, HttpServletResponse response)throws Exception {
|
||||||
|
|
||||||
LOGGER.info("세션 아이디 : " + request.getSession().getAttribute("USERID") + " params userid : " + params.get("USER_ID"));
|
LOGGER.info("세션 아이디 : " + request.getSession().getAttribute("USERID") + " params userid : " + params.get("USER_ID"));
|
||||||
ArrayList<?> MODI_ITEM_LIST = new ArrayList<>(); // "수정요청 대상" 관리자가 체크한 항목 조회
|
|
||||||
|
|
||||||
if(request.getSession().getAttribute("USERID").equals(params.get("USER_ID"))) {
|
if(request.getSession().getAttribute("USERID").equals(params.get("USER_ID"))) {
|
||||||
mav.setViewName("web/manage/select_modeify_call_reason");
|
mav.setViewName("web/manage/select_modeify_call_reason");
|
||||||
|
|
||||||
EgovMap result = masterService.selectModeifyCallReason(params);
|
EgovMap result = masterService.selectModeifyCallReason(params);
|
||||||
MODI_ITEM_LIST = masterService.selectModifyItemBitmask(params);
|
|
||||||
|
|
||||||
mav.addObject("result", result);
|
mav.addObject("result", result);
|
||||||
mav.addObject("modiItem", MODI_ITEM_LIST);
|
|
||||||
}
|
}
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,4 @@ public interface RegiPageMapper {
|
||||||
public ArrayList<HashMap<String, Object>> getHoleNamesByProjectCode(HashMap<String,Object> params) throws Exception;
|
public ArrayList<HashMap<String, Object>> getHoleNamesByProjectCode(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,4 @@ public interface RegiPageService {
|
||||||
public int deleteOldDatas(HashMap<String, Object> params) throws Exception;
|
public int deleteOldDatas(HashMap<String, Object> params) throws Exception;
|
||||||
|
|
||||||
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -500,10 +500,4 @@ public class RegiPageServiceImpl implements RegiPageService {
|
||||||
public List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception {
|
public List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception {
|
||||||
return regiPageMapper.getInputdateRangeByUserid(params);
|
return regiPageMapper.getInputdateRangeByUserid(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String, Object> params) throws Exception {
|
|
||||||
return regiPageMapper.selectModifyItemBitmask(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -395,16 +395,4 @@
|
||||||
]]>
|
]]>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 수정요청사유 팝업 > 수정요청대상에 표시 할 항목 조회 -->
|
|
||||||
<select id="selectModifyItem" parameterType="map" resultType="java.util.HashMap">
|
|
||||||
SELECT GRP.GRP_IDX
|
|
||||||
,IT.IT_IDX
|
|
||||||
,GRP.NAME AS GRP_NAME
|
|
||||||
,IT.NAME AS ITEM_NAME
|
|
||||||
FROM TEMP_MANAGE_STATE_MODI_IT IT
|
|
||||||
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX
|
|
||||||
WHERE IT.USE_YN = 'Y'
|
|
||||||
ORDER BY GRP."ORDER", IT."ORDER"
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -31,19 +31,12 @@
|
||||||
DECODE(A.STATE,'4','insert','5','insert','') AS INS,
|
DECODE(A.STATE,'4','insert','5','insert','') AS INS,
|
||||||
DECODE(A.STATE,'4','delete','') AS DEL,
|
DECODE(A.STATE,'4','delete','') AS DEL,
|
||||||
DECODE(A.STATE,'5','true','false') AS CURSOR,
|
DECODE(A.STATE,'5','true','false') AS CURSOR,
|
||||||
B.SMS_MSG,
|
B.SMS_MSG
|
||||||
ST.MODIFY_ITEM
|
FROM TEMP_PROJECT_INFO A, TEMP_SMS_LOG B
|
||||||
FROM TEMP_PROJECT_INFO A
|
|
||||||
LEFT JOIN (SELECT *
|
|
||||||
FROM (SELECT L.*
|
|
||||||
,ROW_NUMBER() OVER (PARTITION BY PROJECT_CODE ORDER BY REG_DATE DESC) AS RN
|
|
||||||
FROM TEMP_SMS_LOG L)
|
|
||||||
WHERE RN = 1) B ON A.PROJECT_CODE = B.PROJECT_CODE
|
|
||||||
LEFT JOIN TEMP_MANAGE_STATE ST ON ST.PROJECT_CODE = A.PROJECT_CODE
|
|
||||||
AND ST.STATE = '5'
|
|
||||||
|
|
||||||
WHERE
|
WHERE
|
||||||
NVL(A.USE_YN,' ') <> 'N' AND A.USERID = #{userId}
|
NVL(A.USE_YN,' ') <> 'N' AND A.USERID = #{userId} AND
|
||||||
|
A.PROJECT_CODE = B.PROJECT_CODE (+)
|
||||||
]]>
|
]]>
|
||||||
|
|
||||||
<if test="projectName != null and projectName != ''">
|
<if test="projectName != null and projectName != ''">
|
||||||
|
|
@ -321,8 +314,8 @@
|
||||||
|
|
||||||
<insert id="insertHistSeq" parameterType="map">
|
<insert id="insertHistSeq" parameterType="map">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE, MODIFY_ITEM )
|
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE )
|
||||||
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, SB.USERID, SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE, MODIFY_ITEM
|
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, SB.USERID, SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE
|
||||||
FROM TEMP_MANAGE_STATE SA
|
FROM TEMP_MANAGE_STATE SA
|
||||||
, WEB_DATAINPUT SB
|
, WEB_DATAINPUT SB
|
||||||
WHERE SA.PROJECT_CODE = #{PROJECT_CODE}
|
WHERE SA.PROJECT_CODE = #{PROJECT_CODE}
|
||||||
|
|
@ -373,7 +366,6 @@
|
||||||
WHEN MATCHED THEN
|
WHEN MATCHED THEN
|
||||||
UPDATE SET STATE = #{STATE}
|
UPDATE SET STATE = #{STATE}
|
||||||
, MODEIFY_CALL_REASON = #{MODEIFY_CALL_REASON}
|
, MODEIFY_CALL_REASON = #{MODEIFY_CALL_REASON}
|
||||||
, MODIFY_ITEM = #{MODIFY_ITEM}
|
|
||||||
, USERID = #{USERID}
|
, USERID = #{USERID}
|
||||||
, DATETIME = SYSDATE
|
, DATETIME = SYSDATE
|
||||||
, COMPLETEDATE = ''
|
, COMPLETEDATE = ''
|
||||||
|
|
@ -385,7 +377,6 @@
|
||||||
PROJECT_CODE
|
PROJECT_CODE
|
||||||
, STATE
|
, STATE
|
||||||
, MODEIFY_CALL_REASON
|
, MODEIFY_CALL_REASON
|
||||||
, MODIFY_ITEM
|
|
||||||
, USERID
|
, USERID
|
||||||
, DATETIME
|
, DATETIME
|
||||||
, MODIFY_CALL_DATE
|
, MODIFY_CALL_DATE
|
||||||
|
|
@ -393,7 +384,6 @@
|
||||||
#{PROJECT_CODE}
|
#{PROJECT_CODE}
|
||||||
, #{STATE}
|
, #{STATE}
|
||||||
, #{MODEIFY_CALL_REASON}
|
, #{MODEIFY_CALL_REASON}
|
||||||
, #{MODIFY_ITEM}
|
|
||||||
, #{USERID}
|
, #{USERID}
|
||||||
, SYSDATE
|
, SYSDATE
|
||||||
, 1
|
, 1
|
||||||
|
|
@ -423,8 +413,8 @@
|
||||||
|
|
||||||
<insert id="insertRecode" parameterType="map">
|
<insert id="insertRecode" parameterType="map">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE, MODIFY_DESC, MODIFY_ITEM )
|
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE, MODIFY_DESC )
|
||||||
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, '${USERID}', SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE, '검수자가 입력자의 동의를 받아 직접 등록', MODIFY_ITEM
|
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, '${USERID}', SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE, '검수자가 입력자의 동의를 받아 직접 등록'
|
||||||
FROM TEMP_MANAGE_STATE SA
|
FROM TEMP_MANAGE_STATE SA
|
||||||
, WEB_DATAINPUT SB
|
, WEB_DATAINPUT SB
|
||||||
WHERE SA.PROJECT_CODE = #{PROJECT_CODE}
|
WHERE SA.PROJECT_CODE = #{PROJECT_CODE}
|
||||||
|
|
@ -558,7 +548,6 @@ MERGE INTO TEMP_MANAGE_STATE
|
||||||
WHEN MATCHED THEN
|
WHEN MATCHED THEN
|
||||||
UPDATE SET STATE = #{STATE}
|
UPDATE SET STATE = #{STATE}
|
||||||
, MODEIFY_CALL_REASON = #{MODEIFY_CALL_REASON}
|
, MODEIFY_CALL_REASON = #{MODEIFY_CALL_REASON}
|
||||||
, MODIFY_ITEM = #{MODIFY_ITEM}
|
|
||||||
, USERID = #{USERID}
|
, USERID = #{USERID}
|
||||||
, DATETIME = SYSDATE
|
, DATETIME = SYSDATE
|
||||||
, COMPLETEDATE = ''
|
, COMPLETEDATE = ''
|
||||||
|
|
@ -570,7 +559,6 @@ MERGE INTO TEMP_MANAGE_STATE
|
||||||
PROJECT_CODE
|
PROJECT_CODE
|
||||||
, STATE
|
, STATE
|
||||||
, MODEIFY_CALL_REASON
|
, MODEIFY_CALL_REASON
|
||||||
, MODIFY_ITEM
|
|
||||||
, USERID
|
, USERID
|
||||||
, DATETIME
|
, DATETIME
|
||||||
, HIST_SEQ
|
, HIST_SEQ
|
||||||
|
|
@ -579,7 +567,6 @@ MERGE INTO TEMP_MANAGE_STATE
|
||||||
#{PROJECT_CODE}
|
#{PROJECT_CODE}
|
||||||
, #{STATE}
|
, #{STATE}
|
||||||
, #{MODEIFY_CALL_REASON}
|
, #{MODEIFY_CALL_REASON}
|
||||||
, #{MODIFY_ITEM}
|
|
||||||
, #{USERID}
|
, #{USERID}
|
||||||
, SYSDATE
|
, SYSDATE
|
||||||
, 1
|
, 1
|
||||||
|
|
@ -1417,11 +1404,8 @@ INSERT INTO TEMP_SMS_LOG (
|
||||||
<select id="selectModeifyCallReason" parameterType="map" resultType="EgovMap">
|
<select id="selectModeifyCallReason" parameterType="map" resultType="EgovMap">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
SELECT SMS_MSG
|
SELECT SMS_MSG
|
||||||
FROM (SELECT L.SMS_MSG
|
FROM TEMP_SMS_LOG
|
||||||
,ROW_NUMBER() OVER (PARTITION BY L.PROJECT_CODE ORDER BY L.REG_DATE DESC) AS RN
|
WHERE PROJECT_CODE = #{PROJECT_CODE}
|
||||||
FROM TEMP_SMS_LOG L
|
|
||||||
WHERE L.PROJECT_CODE = #{PROJECT_CODE})
|
|
||||||
WHERE RN = 1
|
|
||||||
]]>
|
]]>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
@ -1450,17 +1434,4 @@ INSERT INTO TEMP_SMS_LOG (
|
||||||
AND tmi.REPORT_TYPE = 'CH'
|
AND tmi.REPORT_TYPE = 'CH'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 수정요청사유 팝업 > 관리자가 체크한 수정대상 항목 조회 -->
|
|
||||||
<select id="selectModifyItemBitmask" parameterType="map" resultType="java.util.HashMap">
|
|
||||||
SELECT GRP.GRP_IDX
|
|
||||||
,IT.IT_IDX
|
|
||||||
,GRP.NAME AS GRP_NAME
|
|
||||||
,GRP."DESC" AS GRP_DESC
|
|
||||||
,IT.NAME AS ITEM_NAME
|
|
||||||
FROM TEMP_MANAGE_STATE_MODI_IT IT
|
|
||||||
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX
|
|
||||||
WHERE BITAND(#{MODIFY_ITEM}, IT.IT_IDX) > 0
|
|
||||||
AND IT.USE_YN = 'Y'
|
|
||||||
ORDER BY GRP."ORDER", IT."ORDER"
|
|
||||||
</select>
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -119,11 +119,9 @@ function delBtnClick(report_type, project_code) {
|
||||||
|
|
||||||
|
|
||||||
// 수정 버튼
|
// 수정 버튼
|
||||||
// function msgBtnTemplate(report_type, project_code, message){
|
function msgBtnTemplate(report_type, project_code, message){
|
||||||
function msgBtnTemplate(report_type, project_code, modify_item, message){
|
|
||||||
if (msg = "message"){
|
if (msg = "message"){
|
||||||
// return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"'"+');">수정</button>';
|
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"'"+');">수정</button>';
|
||||||
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"','"+modify_item+"'"+');">수정</button>';
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return " ";
|
return " ";
|
||||||
|
|
@ -131,11 +129,11 @@ function msgBtnTemplate(report_type, project_code, modify_item, message){
|
||||||
}
|
}
|
||||||
|
|
||||||
//수정요청 클릭
|
//수정요청 클릭
|
||||||
function selectModifycallBtnClick(projectCode, createUserid, modifyItem) {
|
function selectModifycallBtnClick(projectCode, createUserid) {
|
||||||
var url = "/selectModeifyCallReason.do";
|
var url = "/selectModeifyCallReason.do";
|
||||||
var param = "PROJECT_CODE=" + projectCode + "&USER_ID=" + createUserid + "&MODIFY_ITEM=" + modifyItem;
|
var param = "PROJECT_CODE=" + projectCode + "&USER_ID=" + createUserid;
|
||||||
|
|
||||||
fn_openPopup(url, param, '480', '665');
|
fn_openPopup(url, param, '480', '330');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -201,8 +199,7 @@ function kendoGrid() {
|
||||||
field: "message",
|
field: "message",
|
||||||
width: 70,
|
width: 70,
|
||||||
title: "요청사항",
|
title: "요청사항",
|
||||||
// template: "#if (data.smsMsg != '') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid) #</div>#}#"
|
template: "#if (data.smsMsg != '') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid) #</div>#}#"
|
||||||
template: "#if (data.state == '5') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid, data.modifyItem) #</div>#}#"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: "excelUpload",
|
field: "excelUpload",
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,7 @@ function modifycallBtnClick(project_code, checkuserid) {
|
||||||
var url = "/modeifyCallReason.do";
|
var url = "/modeifyCallReason.do";
|
||||||
var param = "PROJECT_CODE="+project_code;
|
var param = "PROJECT_CODE="+project_code;
|
||||||
|
|
||||||
fn_openPopup(url, param, '480', '775');
|
fn_openPopup(url, param, '480', '275');
|
||||||
}else{
|
}else{
|
||||||
alert("해당 검수자가 아닙니다.");
|
alert("해당 검수자가 아닙니다.");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,46 +11,8 @@
|
||||||
<link rel="stylesheet" type="text/css" href="/web/css/popup.css"/>
|
<link rel="stylesheet" type="text/css" href="/web/css/popup.css"/>
|
||||||
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
||||||
|
|
||||||
<style>
|
|
||||||
/* 1depth UL 전체 */
|
|
||||||
.pop_contents > ul {
|
|
||||||
list-style: none;
|
|
||||||
padding-left: 0;
|
|
||||||
margin: 0;
|
|
||||||
visibility: visible !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1depth LI (제목) */
|
|
||||||
.pop_contents > ul > li {
|
|
||||||
margin-bottom: 12px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
|
||||||
.pop_contents ul ul {
|
|
||||||
list-style: none;
|
|
||||||
margin: 6px 0 0 0;
|
|
||||||
padding-left: 0;
|
|
||||||
|
|
||||||
display: flex; /* 가로 정렬 핵심 */
|
|
||||||
flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */
|
|
||||||
gap: 20px; /* 라디오 간 간격 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.pop_contents ul ul input[type="checkbox"] {
|
|
||||||
vertical-align: middle;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 2depth 항목 */
|
|
||||||
.pop_contents ul ul li {
|
|
||||||
font-weight: normal;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
let addNum = 0;
|
|
||||||
//html이 ready 된 상태에서 내용 적용.
|
//html이 ready 된 상태에서 내용 적용.
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
resize();
|
resize();
|
||||||
|
|
@ -89,8 +51,7 @@ function fn_smsOpenPop() {
|
||||||
|
|
||||||
// SMS전송결과 CALLBACK
|
// SMS전송결과 CALLBACK
|
||||||
function fn_smsGetResult(returnValue) {
|
function fn_smsGetResult(returnValue) {
|
||||||
addNum = 0;
|
|
||||||
addNumModifyItemValue(); // 선택된 체크박스의 value값을 모두 더한다.(비트마스크 연산시 필요)
|
|
||||||
var result = returnValue
|
var result = returnValue
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -112,20 +73,6 @@ function fn_smsGetResult(returnValue) {
|
||||||
|
|
||||||
//window.close();
|
//window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 수정요청 항목(비트마스크연산) 저장을 위한 처리
|
|
||||||
* 0은 선택하지 않은것임
|
|
||||||
*/
|
|
||||||
function addNumModifyItemValue(){
|
|
||||||
var ele = $('input[name="MODIFY_ITEM_VAL"]:checked')
|
|
||||||
$.each(ele, function(index, item) {
|
|
||||||
<%-- console.log("this addNum : " + addNum + ", this val : " + parseInt($(item).val()))--%>
|
|
||||||
addNum = addNum + parseInt($(item).val())
|
|
||||||
<%-- console.log("=============================")--%>
|
|
||||||
});
|
|
||||||
$('#MODIFY_ITEM').val(addNum);
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -135,7 +82,6 @@ function addNumModifyItemValue(){
|
||||||
<form name="frmModifyCall" id="frmModifyCall" method="post">
|
<form name="frmModifyCall" id="frmModifyCall" method="post">
|
||||||
<input type="hidden" id="PROC" name="PROC" value="MODIFY_POP" />
|
<input type="hidden" id="PROC" name="PROC" value="MODIFY_POP" />
|
||||||
<input type="hidden" id="REPORT_TYPE" name="REPORT_TYPE" value="" />
|
<input type="hidden" id="REPORT_TYPE" name="REPORT_TYPE" value="" />
|
||||||
<input type="hidden" id="MODIFY_ITEM" name="MODIFY_ITEM" value="" />
|
|
||||||
<input type="hidden" id="PROJECT_CODE" name="PROJECT_CODE" value="${resultList.projectCode}" />
|
<input type="hidden" id="PROJECT_CODE" name="PROJECT_CODE" value="${resultList.projectCode}" />
|
||||||
<div id="pop_wrap">
|
<div id="pop_wrap">
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||||
|
|
@ -145,92 +91,15 @@ function addNumModifyItemValue(){
|
||||||
|
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${resultList.proc eq 'view'}">
|
<c:when test="${resultList.proc eq 'view'}">
|
||||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:147px;">${resultList.modeifyCallReason}</div>
|
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${resultList.modeifyCallReason}</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:otherwise>
|
<c:otherwise>
|
||||||
<div class="pop_contents"><textarea name="MODEIFY_CALL_REASON" id="MODEIFY_CALL_REASON" rows="5" style="width:96%;"></textarea></div>
|
<div class="pop_contents"><textarea name="MODEIFY_CALL_REASON" id="MODEIFY_CALL_REASON" rows="10" style="width:96%;"></textarea></div>
|
||||||
|
<div style="text-align:center;margin-bottom:10px;"><a href="#" onClick="fn_submit();"><img src="/web/images/btn_save.png" alt="저장" /></a></div>
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상</div>
|
|
||||||
<div class="pop_contents">
|
|
||||||
<c:set var="prevGrp" value="" />
|
|
||||||
<ul>
|
|
||||||
<c:forEach var="item" items="${resultList.modiItemList}" varStatus="st">
|
|
||||||
<!-- 새로운 그룹이 시작되는 경우 -->
|
|
||||||
<c:if test="${prevGrp ne item.GRP_IDX}">
|
|
||||||
<!-- 첫 그룹이 아니라면 이전 그룹의 ul/li 닫기 -->
|
|
||||||
<c:if test="${!st.first}">
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</c:if>
|
|
||||||
<!-- 그룹 제목 표시 -->
|
|
||||||
<li data-grp="${item.GRP_IDX }">
|
|
||||||
${item.GRP_NAME}
|
|
||||||
<ul>
|
|
||||||
</c:if>
|
|
||||||
<!-- 아이템 출력 -->
|
|
||||||
<li>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" name="MODIFY_ITEM_VAL" value="${item.IT_IDX}" />
|
|
||||||
${item.ITEM_NAME}
|
|
||||||
</label>
|
|
||||||
</li>
|
|
||||||
<!-- prevGrp 최신화 -->
|
|
||||||
<c:set var="prevGrp" value="${item.GRP_IDX}" />
|
|
||||||
<!-- 마지막 루프일 경우 태그 닫기 -->
|
|
||||||
<c:if test="${st.last}">
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</c:if>
|
|
||||||
</c:forEach>
|
|
||||||
<%-- <li>시험 데이터 미입력/그래프 누락
|
|
||||||
<ul>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />입도시험</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />일축압축시험</label></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>프로젝트 기본 정보 미기재
|
|
||||||
<ul>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />목적</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />공사상황</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />코어사진</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />하향식탄성파</label></li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>파일 누락·단위 오류 등
|
|
||||||
<ul>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />단위 확인</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />위치 오류</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />파일 누락</label></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>첨부 파일 요청
|
|
||||||
<ul>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />보고서 재첨부</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />시험정보 추가 요청</label></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>정밀 품질 보정 요청
|
|
||||||
<ul>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />그래프 오류</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />지층정보 오류</label></li>
|
|
||||||
<li><label><input type="checkbox" name="sCls" />사진 누락</label></li>
|
|
||||||
</ul>
|
|
||||||
</li> --%>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<c:choose>
|
|
||||||
<c:when test="${resultList.proc ne 'view'}">
|
|
||||||
<div style="text-align:center;margin-bottom:10px;"><a href="#" onClick="fn_submit();"><img src="/web/images/btn_save.png" alt="저장" /></a></div>
|
|
||||||
</c:when>
|
|
||||||
</c:choose>
|
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -11,83 +11,6 @@
|
||||||
<link rel="stylesheet" type="text/css" href="/web/css/popup.css"/>
|
<link rel="stylesheet" type="text/css" href="/web/css/popup.css"/>
|
||||||
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
||||||
|
|
||||||
<style>
|
|
||||||
/* 1depth UL 전체 */
|
|
||||||
.pop_contents > ul {
|
|
||||||
list-style: none;
|
|
||||||
padding-left: 0;
|
|
||||||
margin: 0;
|
|
||||||
visibility: visible !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1depth LI (제목) */
|
|
||||||
.pop_contents > ul > li {
|
|
||||||
margin-bottom: 12px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
|
||||||
.pop_contents ul ul {
|
|
||||||
list-style: none;
|
|
||||||
margin: 6px 0 0 0;
|
|
||||||
padding-left: 0;
|
|
||||||
|
|
||||||
display: flex; /* 가로 정렬 핵심 */
|
|
||||||
flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */
|
|
||||||
gap: 10px; /* 라디오 간 간격 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.pop_contents ul ul input[type="checkbox"] {
|
|
||||||
vertical-align: middle;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 2depth 항목 */
|
|
||||||
.pop_contents ul ul li {
|
|
||||||
font-weight: normal;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
i.help {
|
|
||||||
position: relative;
|
|
||||||
margin-left: 5px;
|
|
||||||
border: 2px solid #89c2ff;
|
|
||||||
padding: 0px 3px;
|
|
||||||
border-radius: 10px;
|
|
||||||
color: #89c2ff;
|
|
||||||
background: #fff;
|
|
||||||
font-size: 11px;
|
|
||||||
font-weight: 800;
|
|
||||||
cursor:pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help:hover::after {
|
|
||||||
content: attr(data-tooltip);
|
|
||||||
position: absolute;
|
|
||||||
top: 24px;
|
|
||||||
left: 0;
|
|
||||||
white-space: normal;
|
|
||||||
width: 240px;
|
|
||||||
background: #333;
|
|
||||||
color: #fff;
|
|
||||||
padding: 8px 10px;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 12px;
|
|
||||||
z-index: 9999;
|
|
||||||
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.help:hover::before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
top: 18px;
|
|
||||||
left: 8px;
|
|
||||||
border-width: 6px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #333 transparent transparent transparent;
|
|
||||||
z-index: 9999;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
//html이 ready 된 상태에서 내용 적용.
|
//html이 ready 된 상태에서 내용 적용.
|
||||||
|
|
@ -113,46 +36,10 @@ function resize(){
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||||
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기" /></a></div>
|
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기" /></a></div>
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청사유</div>
|
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청사유</div>
|
||||||
|
|
||||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${result.smsMsg}</div>
|
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${result.smsMsg}</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<c:choose>
|
|
||||||
<c:when test="${empty modiItem }">
|
|
||||||
</c:when>
|
|
||||||
<c:otherwise>
|
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상</div>
|
|
||||||
<div class="pop_contents">
|
|
||||||
<c:set var="prevGrp" value="" />
|
|
||||||
<ul>
|
|
||||||
<c:forEach var="item" items="${modiItem}" varStatus="st">
|
|
||||||
<!-- 새로운 그룹이 시작되는 경우 -->
|
|
||||||
<c:if test="${prevGrp ne item.GRP_IDX}">
|
|
||||||
<!-- 첫 그룹이 아니라면 이전 그룹의 ul/li 닫기 -->
|
|
||||||
<c:if test="${!st.first}">
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</c:if>
|
|
||||||
<!-- 그룹 제목 표시 -->
|
|
||||||
<li data-grp="${item.GRP_IDX }">
|
|
||||||
${item.GRP_NAME} <c:if test="${not empty item.GRP_DESC }"><i class="help" data-tooltip="${ item.GRP_DESC }">?</i></c:if>
|
|
||||||
<ul>
|
|
||||||
</c:if>
|
|
||||||
<!-- 아이템 출력 -->
|
|
||||||
<li>${item.ITEM_NAME}<c:if test="${!(st.last or item.GRP_IDX ne modiItem[st.index + 1].GRP_IDX)}">,</c:if>
|
|
||||||
</li>
|
|
||||||
<!-- prevGrp 최신화 -->
|
|
||||||
<c:set var="prevGrp" value="${item.GRP_IDX}" />
|
|
||||||
<!-- 마지막 루프일 경우 태그 닫기 -->
|
|
||||||
<c:if test="${st.last}">
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</c:if>
|
|
||||||
</c:forEach>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</c:otherwise>
|
|
||||||
</c:choose>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue