summaryrefslogtreecommitdiff
path: root/components/pq-input/pq-input-tabs.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'components/pq-input/pq-input-tabs.tsx')
-rw-r--r--components/pq-input/pq-input-tabs.tsx34
1 files changed, 29 insertions, 5 deletions
diff --git a/components/pq-input/pq-input-tabs.tsx b/components/pq-input/pq-input-tabs.tsx
index 0c3b2276..7ae6d16a 100644
--- a/components/pq-input/pq-input-tabs.tsx
+++ b/components/pq-input/pq-input-tabs.tsx
@@ -159,6 +159,27 @@ export function PQInputTabs({
const shouldDisableInput = isReadOnly;
+ // 코드 순서로 정렬하는 함수 (1-1-1, 1-1-2, 1-2-1 순서)
+ const sortByCode = (items: any[]) => {
+ return [...items].sort((a, b) => {
+ const parseCode = (code: string) => {
+ return code.split('-').map(part => parseInt(part, 10))
+ }
+
+ const aCode = parseCode(a.code)
+ const bCode = parseCode(b.code)
+
+ for (let i = 0; i < Math.max(aCode.length, bCode.length); i++) {
+ const aPart = aCode[i] || 0
+ const bPart = bCode[i] || 0
+ if (aPart !== bPart) {
+ return aPart - bPart
+ }
+ }
+ return 0
+ })
+ }
+
// ----------------------------------------------------------------------
// A) Create initial form values
// Mark items as "saved" if they have existing answer or attachments
@@ -167,7 +188,10 @@ export function PQInputTabs({
const answers: PQFormValues["answers"] = []
data.forEach((group) => {
- group.items.forEach((item) => {
+ // 그룹 내 아이템들을 코드 순서로 정렬
+ const sortedItems = sortByCode(group.items)
+
+ sortedItems.forEach((item) => {
// Check if the server item is already "complete"
const hasExistingAnswer = item.answer && item.answer.trim().length > 0
const hasExistingAttachments = item.attachments && item.attachments.length > 0
@@ -634,7 +658,7 @@ export function PQInputTabs({
disabled={isSaving || !isAnyItemDirty || shouldDisableInput}
onClick={handleSaveAll}
>
- {isSaving ? "Saving..." : "Save All"}
+ {isSaving ? "Saving..." : "임시 저장"}
<Save className="ml-2 h-4 w-4" />
</Button>
@@ -644,7 +668,7 @@ export function PQInputTabs({
disabled={!allSaved || isSubmitting || shouldDisableInput}
onClick={handleSubmitPQ}
>
- {isSubmitting ? "Submitting..." : "Submit PQ"}
+ {isSubmitting ? "Submitting..." : "최종 제출"}
<CheckCircle2 className="ml-2 h-4 w-4" />
</Button>
</div>
@@ -655,7 +679,7 @@ export function PQInputTabs({
<TabsContent key={group.groupName} value={group.groupName}>
{/* 2-column grid */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 pb-4">
- {group.items.map((item) => {
+ {sortByCode(group.items).map((item) => {
const { criteriaId, code, checkPoint, description, contractInfo, additionalRequirement } = item
const answerIndex = getAnswerIndex(criteriaId)
if (answerIndex === -1) return null
@@ -670,7 +694,7 @@ export function PQInputTabs({
return (
- <Collapsible key={criteriaId} defaultOpen={!isSaved} className="w-full">
+ <Collapsible key={criteriaId} defaultOpen={isReadOnly || !isSaved} className="w-full">
<Card className={isSaved ? "border-green-200" : ""}>
<CardHeader className="pb-1">
<div className="flex justify-between">