From 0e467aaaea78b9a2f45068d18d5ecf07ac430b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=8A=B9=EC=97=B0?= <165753731+seungyeoneeee@users.noreply.github.com> Date: Mon, 21 Apr 2025 21:40:16 +0900 Subject: [PATCH 1/3] chore(budget-qa): major & minor fix (#5789) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: update languages Signed-off-by: 이승연 * feat: update option of userSelectDropdown common component Signed-off-by: 이승연 * feat: fix with qa issues Signed-off-by: 이승연 --------- Signed-off-by: 이승연 --- .../modules/user/UserSelectDropdown.vue | 4 +- .../components/BudgetCreateManagerSelect.vue | 1 + .../components/BudgetCreateStep2.vue | 76 +++++++++++++------ .../components/BudgetCreateStep3.vue | 2 +- .../components/BudgetDeleteCheckModal.vue | 2 +- .../BudgetDetailBaseInformation.vue | 71 +++++++++-------- .../components/BudgetDetailDeleteModal.vue | 2 +- .../components/BudgetMainList.vue | 48 ++++++++++-- .../components/BudgetMainToolset.vue | 45 +++++++---- .../components/BudgetNameEditModal.vue | 4 +- .../BudgetUsageTrendMonthlyChart.vue | 18 ++++- .../components/BudgetUsageTrendTotalChart.vue | 42 +++++----- .../components/BudgetUsageTrendTotalTable.vue | 19 +++-- .../constants/budget-constant.ts | 1 + .../pages/admin/AdminBudgetMainPage.vue | 20 +---- .../stores/budget-detail-page-store.ts | 17 ++++- .../ServiceAccountBaseInformationForm.vue | 8 ++ .../console-translation-2.8.babel | 54 +++++++++++-- packages/language-pack/en.json | 2 + packages/language-pack/ja.json | 8 +- packages/language-pack/ko.json | 8 +- 21 files changed, 304 insertions(+), 148 deletions(-) diff --git a/apps/web/src/common/modules/user/UserSelectDropdown.vue b/apps/web/src/common/modules/user/UserSelectDropdown.vue index cb3faf3f51..0abee8f4d3 100644 --- a/apps/web/src/common/modules/user/UserSelectDropdown.vue +++ b/apps/web/src/common/modules/user/UserSelectDropdown.vue @@ -54,6 +54,7 @@ const props = withDefaults(defineProps<{ excludedSelectedIds?: string[]; size?: 'sm'|'md'; pageSize?: number; + showDeleteAllButton?: boolean; }>(), { selectedId: undefined, selectedIds: undefined, @@ -75,6 +76,7 @@ const props = withDefaults(defineProps<{ excludedSelectedIds: undefined, size: 'md', pageSize: 10, + showDeleteAllButton: true, }); const emit = defineEmits<{(event: 'update:selected-id', value?: string): void; @@ -273,7 +275,7 @@ watch([() => props.selectedId, () => props.selectedIds], ([newUserId, newUserIds budgetCreatePageState.scope.serviceAccount, async () => { show-user-list :show-user-group-list="false" :selected-id="budgetCreatePageState.budgetManager" + :show-delete-all-button="false" @update:selected-id="handleSelectId" @formatted-selected-ids="handleFormatBudgetManager" /> diff --git a/apps/web/src/services/cost-explorer/components/BudgetCreateStep2.vue b/apps/web/src/services/cost-explorer/components/BudgetCreateStep2.vue index 82a6d87b6a..7e6ca00029 100644 --- a/apps/web/src/services/cost-explorer/components/BudgetCreateStep2.vue +++ b/apps/web/src/services/cost-explorer/components/BudgetCreateStep2.vue @@ -145,8 +145,8 @@ watch(() => [ budgetCreatePageState.planned_limits, budgetCreatePageState.selectedMonthlyBudgetAllocation, budgetCreatePageState.budgetAppliedSameAmount, - state.initialAmount, - state.monthlyGrowthRate, + budgetCreatePageState.initialAmount, + budgetCreatePageState.monthlyGrowthRate, budgetCreatePageState.budgetEachDate, state.startSelectedForBudgetYear, state.endSelectedForBudgetYear, @@ -173,26 +173,31 @@ watch(() => [ } state.isContinueAble = true; + } else if (budgetCreatePageState.time_unit === 'TOTAL' && budgetCreatePageState.limit === undefined) { + state.isContinueAble = false; } else if (budgetCreatePageState.time_unit === 'MONTHLY') { - if (budgetCreatePageState.planned_limits && budgetCreatePageState.planned_limits.length > 0) { - const isDuplicatedBudgetYear = ( - budgetCreatePageState.project - && budgetCreatePageState.alreadyExistingBudgetYear.length > 0 - && ( - (state.startSelectedForBudgetYear && budgetCreatePageState.alreadyExistingBudgetYear.includes(budgetCreatePageState.budgetYear)) - || (state.endSelectedForBudgetYear && budgetCreatePageState.alreadyExistingBudgetYear.includes(budgetCreatePageState.budgetYear)) - ) - ); - - if (isDuplicatedBudgetYear) { - state.isContinueAble = false; + if (budgetCreatePageState.selectedMonthlyBudgetAllocation === 'applySameAmount') { + if (isValidPositiveNumber(budgetCreatePageState.budgetAppliedSameAmount)) { + state.isContinueAble = true; + return; + } + } else if (budgetCreatePageState.selectedMonthlyBudgetAllocation === 'increaseBySpecificPercentage') { + const isInitialValid = isValidPositiveNumber(budgetCreatePageState.initialAmount); + const isGrowthValid = isValidPositiveNumber(budgetCreatePageState.monthlyGrowthRate); + state.isContinueAble = isInitialValid && isGrowthValid; + return; + } else if (budgetCreatePageState.selectedMonthlyBudgetAllocation === 'enterManually') { + const startDate = dayjs.utc(budgetCreatePageState.startMonth[0]); + const endDate = dayjs.utc(budgetCreatePageState.endMonth[0]); + const length = endDate.diff(startDate, 'month') + 1; + const valid = budgetCreatePageState.budgetEachDate.length === length + && budgetCreatePageState.budgetEachDate.every((v, idx) => isDateInRange(idx) && isValidPositiveNumber(v)); + if (valid) { + state.isContinueAble = true; return; } - - state.isContinueAble = true; - } else { - state.isContinueAble = false; } + state.isContinueAble = false; } }, { deep: true, immediate: true }); @@ -240,19 +245,35 @@ const handlePrevious = () => { }; const handleUpdateBudgetAmount = (value) => { - budgetCreatePageStore.setLimit(value); + if (value === '' || value === null || Number.isNaN(Number(value))) { + budgetCreatePageStore.setLimit(undefined); + } else { + budgetCreatePageStore.setLimit(Number(value)); + } }; const handleUpdateBudgetAppliedSameAmount = (value) => { - budgetCreatePageStore.setBudgetAppliedSameAmount(value); + if (value === '' || value === null || Number.isNaN(Number(value))) { + budgetCreatePageStore.setBudgetAppliedSameAmount(undefined); + } else { + budgetCreatePageStore.setBudgetAppliedSameAmount(Number(value)); + } }; const handleUpdateInitialAmount = (value) => { - budgetCreatePageStore.setInitialAmount(value); + if (value === '' || value === null || Number.isNaN(Number(value))) { + budgetCreatePageStore.setInitialAmount(undefined); + } else { + budgetCreatePageStore.setInitialAmount(Number(value)); + } }; const handleUpdateMonthlyGrowthRate = (value) => { - budgetCreatePageStore.setMonthlyGrowthRate(value); + if (value === '' || value === null || Number.isNaN(Number(value))) { + budgetCreatePageStore.setMonthlyGrowthRate(undefined); + } else { + budgetCreatePageStore.setMonthlyGrowthRate(Number(value)); + } }; const handleUpdateStartSelectForBudgetYear = (value: boolean) => { @@ -273,6 +294,7 @@ const isValidPositiveNumber = (value: any): boolean => { const num = Number(value); return value !== '' && !Number.isNaN(num) && num > 0; }; + watch([ () => budgetCreatePageState.startMonth, () => budgetCreatePageState.endMonth, @@ -293,6 +315,11 @@ watch([ } }, { immediate: true }); +watch(() => budgetCreatePageState.limit, () => { + if (budgetCreatePageState.limit === null) { + budgetCreatePageState.limit = undefined; + } +}, { immediate: true });