diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp
index 0464287..d1b5f0e 100644
--- a/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp
+++ b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate2.jsp
@@ -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() {
'
' +
'' +
'' +
- '' +
- '' +
- '' +
- '' +
+ '' +
+ '' +
+ '' +
+ '' +
'' +
'' +
'' +
@@ -605,11 +612,11 @@ function fn_createCategoryFromData(category) {
'' +
'' +
'' +
- '' +
- '' +
- '' +
+ '' +
+ '' +
+ '' +
+ '' +
'' +
- '' +
'' +
'' +
'' +
@@ -1239,13 +1246,13 @@ function fn_generateAndUploadPdf(callback) {
@@ -1284,10 +1291,10 @@ function fn_generateAndUploadPdf(callback) {
-
-
-
-
+
+
+
+
@@ -1348,10 +1355,10 @@ Z: SRG25 P급, C0
-
-
-
-
+
+
+
+
@@ -1389,10 +1396,10 @@ Z: SRG25 P급, C0
-
-
-
-
+
+
+
+
@@ -1433,10 +1440,10 @@ SIEMENS CONTROL PANEL 828D
-
-
-
-
+
+
+
+
@@ -1484,10 +1491,10 @@ LUBRICATION
-
-
-
-
+
+
+
+
@@ -1503,10 +1510,10 @@ LUBRICATION
-
-
-
-
+
+
+
+
@@ -1552,10 +1559,10 @@ NV4Blue(Renishaw)
-
-
-
-
+
+
+
+
@@ -1597,10 +1604,10 @@ NV4Blue(Renishaw)
-
-
-
-
+
+
+
+
diff --git a/WebContent/WEB-INF/view/partMng/structureList.jsp b/WebContent/WEB-INF/view/partMng/structureList.jsp
index 1f136a1..cc54f73 100644
--- a/WebContent/WEB-INF/view/partMng/structureList.jsp
+++ b/WebContent/WEB-INF/view/partMng/structureList.jsp
@@ -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 authParam = new java.util.HashMap();
- 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 authParam = new java.util.HashMap();
+ 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();
}