V2025111901 #71

Merged
hjjeong merged 2 commits from V2025111901 into main 2025-11-21 00:45:02 +00:00
2 changed files with 79 additions and 67 deletions

View File

@@ -132,28 +132,35 @@ body {
width: 100%;
border-collapse: collapse;
margin-bottom: 0;
table-layout: fixed; /* 고정 레이아웃으로 컬럼 너비 강제 */
}
.items-table th,
.items-table td {
border: 1px solid #000;
padding: 8px;
padding: 4px 2px; /* 패딩 축소 */
font-size: 9pt;
overflow: hidden; /* 내용이 넘칠 경우 숨김 */
word-wrap: break-word; /* 긴 단어 줄바꿈 */
}
.items-table th {
background-color: #E8E8E8;
font-weight: bold;
text-align: center;
font-size: 8pt; /* 헤더 글자 크기 축소 */
padding: 3px 2px; /* 헤더 패딩 더 축소 */
line-height: 1.2; /* 줄 간격 축소 */
}
.items-table .col-no { width: 5%; text-align: center; }
.items-table .col-desc { width: 25%; }
.items-table .col-spec { width: 30%; }
.items-table .col-qty { width: 7%; text-align: center; }
.items-table .col-price { width: 12%; text-align: right; }
.items-table .col-amount { width: 12%; text-align: right; }
.items-table .col-remark { width: 9%; text-align: center; }
/* colgroup으로 너비 제어하므로 클래스 기반 너비는 제거하거나 주석 처리 */
.items-table .col-no { text-align: center; }
.items-table .col-desc { }
.items-table .col-spec { }
.items-table .col-qty { text-align: center; }
.items-table .col-price { text-align: right; }
.items-table .col-amount { text-align: right; }
.items-table .col-remark { text-align: center; }
.category-row {
background-color: #f0f0f0;
@@ -541,10 +548,10 @@ function fn_addCategory() {
'<table class="items-table category-section" data-category="category_' + newCategoryNo + '">' +
'<colgroup>' +
'<col style="width: 5%;">' +
'<col style="width: 28%;">' +
'<col style="width: 35%;">' +
'<col style="width: 7%;">' +
'<col style="width: 15%;">' +
'<col style="width: 26%;">' +
'<col style="width: 28.5%;">' +
'<col style="width: 6.5%;">' +
'<col style="width: 24%;">' +
'<col style="width: 10%;">' +
'</colgroup>' +
'<tbody>' +
@@ -605,11 +612,11 @@ function fn_createCategoryFromData(category) {
'<table class="items-table category-section" data-category="' + category.category + '">' +
'<colgroup>' +
'<col style="width: 5%;">' +
'<col style="width: 28%;">' +
'<col style="width: 35%;">' +
'<col style="width: 7%;">' +
'<col style="width: 26%;">' +
'<col style="width: 28.5%;">' +
'<col style="width: 6.5%;">' +
'<col style="width: 24%;">' +
'<col style="width: 10%;">' +
'<col style="width: 15%;">' +
'</colgroup>' +
'<tbody>' +
'<tr class="category-row">' +
@@ -1239,13 +1246,13 @@ function fn_generateAndUploadPdf(callback) {
<!-- 초음파 CNC Machine (특별 영역) -->
<table class="items-table category-section" data-category="cnc_machine">
<colgroup>
<col class="col-no">
<col class="col-desc">
<col class="col-spec">
<col class="col-qty">
<col class="col-price">
<col class="col-amount">
<col class="col-remark">
<col style="width: 5%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
@@ -1269,12 +1276,12 @@ function fn_generateAndUploadPdf(callback) {
<td><input type="text" class="item-remark" value="" style="width: 100%; border: none; background: transparent;"></td>
</tr>
<tr class="subtotal-row">
<td colspan="2" style="text-align: center; font-weight: bold;">최종 견적가</td>
<td colspan="2" style="text-align: center; font-weight: bold; font-size: 8pt;">최종 견적가</td>
<td colspan="2">
<input type="text" class="final-amount" value="" readonly style="width: 70%; border: none; background: transparent; text-align: right; font-weight: bold;">
<span id="currency_display" style="font-weight: bold; margin-left: 5px;"></span>
</td>
<td style="text-align: center;">VAT 별도</td>
<td style="text-align: center; font-size: 8pt;">VAT 별도</td>
</tr>
</tbody>
</table>
@@ -1284,10 +1291,10 @@ function fn_generateAndUploadPdf(callback) {
<table class="items-table category-section" data-category="structure" data-group="group1">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1348,10 +1355,10 @@ Z: SRG25 P급, C0
<table class="items-table category-section" data-category="spindle_module" data-group="group1">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1389,10 +1396,10 @@ Z: SRG25 P급, C0
<table class="items-table category-section" data-category="electric" data-group="group1">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1433,10 +1440,10 @@ SIEMENS CONTROL PANEL 828D</textarea>
<table class="items-table category-section" data-category="utility" data-group="group1">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1484,10 +1491,10 @@ LUBRICATION
<table class="items-table" id="group1_subtotal">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1503,10 +1510,10 @@ LUBRICATION
<table class="items-table category-section" data-category="option">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1552,10 +1559,10 @@ NV4Blue(Renishaw)
<table class="items-table category-section" data-category="setup">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>
@@ -1597,10 +1604,10 @@ NV4Blue(Renishaw)
<table class="items-table category-section" data-category="packing">
<colgroup>
<col style="width: 5%;">
<col style="width: 28%;">
<col style="width: 35%;">
<col style="width: 7%;">
<col style="width: 15%;">
<col style="width: 26%;">
<col style="width: 28.5%;">
<col style="width: 6.5%;">
<col style="width: 24%;">
<col style="width: 10%;">
</colgroup>
<tbody>

View File

@@ -4,18 +4,23 @@
<%@ page import="java.util.*" %>
<%@include file= "/init.jsp" %>
<%
// 권한 체크: AUTHORITY_MASTER의 OBJID가 41000668인 그룹에 속한 사용자인지 확인
// 권한 체크: AUTHORITY_MASTER의 OBJID가 41000668인 그룹에 속한 사용자 또는 관리자인지 확인
boolean hasStatusChangeAuth = false;
try {
org.apache.ibatis.session.SqlSession sqlSession = com.pms.common.SqlMapConfig.getInstance().getSqlSession();
java.util.Map<String, Object> authParam = new java.util.HashMap<String, Object>();
authParam.put("userId", connectUserId);
authParam.put("masterObjid", "41000668");
Integer authCount = (Integer)sqlSession.selectOne("common.checkUserAuthority", authParam);
hasStatusChangeAuth = (authCount != null && authCount > 0);
sqlSession.close();
// 관리자는 자동으로 권한 부여
if(isAdmin) {
hasStatusChangeAuth = true;
} else {
org.apache.ibatis.session.SqlSession sqlSession = com.pms.common.SqlMapConfig.getInstance().getSqlSession();
java.util.Map<String, Object> authParam = new java.util.HashMap<String, Object>();
authParam.put("userId", connectUserId);
authParam.put("masterObjid", "41000668");
Integer authCount = (Integer)sqlSession.selectOne("common.checkUserAuthority", authParam);
hasStatusChangeAuth = (authCount != null && authCount > 0);
sqlSession.close();
}
} catch(Exception e) {
e.printStackTrace();
}