1
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 21s
Docker Build & Deploy / WeChat Notification (push) Successful in 1s
Docker Build & Deploy / Deploy to Production (push) Successful in 6s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s

This commit is contained in:
SunCheng
2026-02-11 17:05:18 +08:00
parent d8a7c11490
commit 0fed10b60d
8 changed files with 15 additions and 95 deletions

View File

@@ -16,6 +16,10 @@
/> />
</keep-alive> </keep-alive>
</router-view> </router-view>
<!-- 底部导航栏全局统一 -->
<GlassBottomNav v-if="showNav" />
<GlobalAddBill <GlobalAddBill
v-if="isShowAddBill" v-if="isShowAddBill"
@success="handleAddTransactionSuccess" @success="handleAddTransactionSuccess"
@@ -152,6 +156,7 @@ import { RouterView, useRoute } from 'vue-router'
import { ref, onMounted, onUnmounted, computed, watch } from 'vue' import { ref, onMounted, onUnmounted, computed, watch } from 'vue'
import { useMessageStore } from '@/stores/message' import { useMessageStore } from '@/stores/message'
import GlobalAddBill from '@/components/Global/GlobalAddBill.vue' import GlobalAddBill from '@/components/Global/GlobalAddBill.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
import '@/styles/common.css' import '@/styles/common.css'
import { needRefresh, updateServiceWorker } from './registerServiceWorker' import { needRefresh, updateServiceWorker } from './registerServiceWorker'
@@ -256,6 +261,16 @@ const isShowAddBill = computed(() => {
return route.path === '/' || route.path === '/balance' || route.path === '/message' || route.path === '/calendar' || route.path === '/calendar-v2' return route.path === '/' || route.path === '/balance' || route.path === '/message' || route.path === '/calendar' || route.path === '/calendar-v2'
}) })
// 需要显示底部导航栏的路由
const showNav = computed(() => {
return [
'/', '/statistics-v2',
'/calendar', '/calendar-v2',
'/balance', '/message',
'/budget', '/setting'
].includes(route.path)
})
onUnmounted(() => { onUnmounted(() => {
if (mediaQuery) { if (mediaQuery) {
mediaQuery.removeEventListener('change', updateTheme) mediaQuery.removeEventListener('change', updateTheme)

View File

@@ -55,12 +55,6 @@
ref="messageViewRef" ref="messageViewRef"
:is-component="true" :is-component="true"
/> />
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="activeNavTab"
@tab-click="handleNavTabClick"
/>
</div> </div>
</template> </template>
@@ -70,17 +64,9 @@ import { useRoute } from 'vue-router'
import TransactionsRecord from './TransactionsRecord.vue' import TransactionsRecord from './TransactionsRecord.vue'
import EmailRecord from './EmailRecord.vue' import EmailRecord from './EmailRecord.vue'
import MessageView from './MessageView.vue' import MessageView from './MessageView.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
const route = useRoute() const route = useRoute()
// 底部导航栏
const activeNavTab = ref('balance')
const handleNavTabClick = (item, index) => {
console.log('Tab clicked:', item.name, index)
// 导航逻辑已在组件内部处理
}
const tabActive = ref(route.query.tab || 'balance') const tabActive = ref(route.query.tab || 'balance')
// 监听路由参数变化,用于从 tabbar 点击时切换 tab // 监听路由参数变化,用于从 tabbar 点击时切换 tab

View File

@@ -497,12 +497,6 @@
@cancel="showDatePicker = false" @cancel="showDatePicker = false"
/> />
</van-popup> </van-popup>
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="navActiveTab"
@tab-click="handleNavTabClick"
/>
</div> </div>
</template> </template>
@@ -524,15 +518,8 @@ import BudgetEditPopup from '@/components/Budget/BudgetEditPopup.vue'
import SavingsConfigPopup from '@/components/Budget/SavingsConfigPopup.vue' import SavingsConfigPopup from '@/components/Budget/SavingsConfigPopup.vue'
import BudgetChartAnalysis from '@/components/Budget/BudgetChartAnalysis.vue' import BudgetChartAnalysis from '@/components/Budget/BudgetChartAnalysis.vue'
import PopupContainer from '@/components/PopupContainer.vue' import PopupContainer from '@/components/PopupContainer.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
// 底部导航栏 // 底部导航栏
const navActiveTab = ref('budget')
const handleNavTabClick = (item, index) => {
console.log('Tab clicked:', item.name, index)
// 导航逻辑已在组件内部处理
}
const activeTab = ref(BudgetCategory.Expense) const activeTab = ref(BudgetCategory.Expense)
const selectedDate = ref(new Date()) const selectedDate = ref(new Date())
const showDatePicker = ref(false) const showDatePicker = ref(false)

View File

@@ -44,12 +44,6 @@
:transaction="currentTransaction" :transaction="currentTransaction"
@save="onDetailSave" @save="onDetailSave"
/> />
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="activeTab"
@tab-click="handleTabClick"
/>
</div> </div>
</template> </template>
@@ -62,14 +56,6 @@ import TransactionList from '@/components/TransactionList.vue'
import TransactionDetail from '@/components/TransactionDetail.vue' import TransactionDetail from '@/components/TransactionDetail.vue'
import SmartClassifyButton from '@/components/SmartClassifyButton.vue' import SmartClassifyButton from '@/components/SmartClassifyButton.vue'
import PopupContainer from '@/components/PopupContainer.vue' import PopupContainer from '@/components/PopupContainer.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
// 底部导航栏
const activeTab = ref('calendar')
const handleTabClick = (item, index) => {
console.log('Tab clicked:', item.name, index)
// 导航逻辑已在组件内部处理
}
const dailyStatistics = ref({}) const dailyStatistics = ref({})
const listVisible = ref(false) const listVisible = ref(false)

View File

@@ -139,12 +139,6 @@
<!-- 底部安全距离 --> <!-- 底部安全距离 -->
<div style="height: calc(95px + env(safe-area-inset-bottom, 0px))" /> <div style="height: calc(95px + env(safe-area-inset-bottom, 0px))" />
</div> </div>
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="activeTab"
@tab-click="handleTabClick"
/>
</div> </div>
</template> </template>
@@ -157,19 +151,11 @@ import { useAuthStore } from '@/stores/auth'
import { useVersionStore } from '@/stores/version' import { useVersionStore } from '@/stores/version'
import { getVapidPublicKey, subscribe, testNotification } from '@/api/notification' import { getVapidPublicKey, subscribe, testNotification } from '@/api/notification'
import { updateServiceWorker } from '@/registerServiceWorker' import { updateServiceWorker } from '@/registerServiceWorker'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
const router = useRouter() const router = useRouter()
const authStore = useAuthStore() const authStore = useAuthStore()
const versionStore = useVersionStore() const versionStore = useVersionStore()
// 底部导航栏
const activeTab = ref('setting')
const handleTabClick = (item, index) => {
console.log('Tab clicked:', item.name, index)
// 导航逻辑已在组件内部处理
}
const fileInputRef = ref(null) const fileInputRef = ref(null)
const currentType = ref('') const currentType = ref('')
const notificationEnabled = ref(false) const notificationEnabled = ref(false)

View File

@@ -70,12 +70,6 @@
@cancel="onDatePickerCancel" @cancel="onDatePickerCancel"
/> />
</van-popup> </van-popup>
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="activeTab"
@tab-click="handleTabClick"
/>
</div> </div>
</template> </template>
@@ -88,7 +82,6 @@ import CalendarModule from './modules/Calendar.vue'
import StatsModule from './modules/Stats.vue' import StatsModule from './modules/Stats.vue'
import TransactionListModule from './modules/TransactionList.vue' import TransactionListModule from './modules/TransactionList.vue'
import TransactionDetailSheet from '@/components/Transaction/TransactionDetailSheet.vue' import TransactionDetailSheet from '@/components/Transaction/TransactionDetailSheet.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
import { getTransactionDetail } from '@/api/transactionRecord' import { getTransactionDetail } from '@/api/transactionRecord'
// 定义组件名称keep-alive 需要通过 name 识别) // 定义组件名称keep-alive 需要通过 name 识别)
@@ -99,12 +92,6 @@ defineOptions({
// 路由 // 路由
const router = useRouter() const router = useRouter()
// 底部导航栏
const activeTab = ref('calendar')
const handleTabClick = () => {
// 导航逻辑已在组件内部处理
}
// 下拉刷新状态 // 下拉刷新状态
const refreshing = ref(false) const refreshing = ref(false)

View File

@@ -318,12 +318,6 @@
:transaction="currentTransaction" :transaction="currentTransaction"
@save="onBillSave" @save="onBillSave"
/> />
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="activeTab"
@tab-click="handleTabClick"
/>
</div> </div>
</template> </template>
@@ -339,18 +333,10 @@ import TransactionList from '@/components/TransactionList.vue'
import TransactionDetail from '@/components/TransactionDetail.vue' import TransactionDetail from '@/components/TransactionDetail.vue'
import SmartClassifyButton from '@/components/SmartClassifyButton.vue' import SmartClassifyButton from '@/components/SmartClassifyButton.vue'
import PopupContainer from '@/components/PopupContainer.vue' import PopupContainer from '@/components/PopupContainer.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
import { getCssVar } from '@/utils/theme' import { getCssVar } from '@/utils/theme'
const router = useRouter() const router = useRouter()
// 底部导航栏
const activeTab = ref('statistics')
const handleTabClick = (item, index) => {
console.log('Tab clicked:', item.name, index)
// 导航逻辑已在组件内部处理
}
// 响应式数据 // 响应式数据
const loading = ref(true) const loading = ref(true)
const firstLoading = ref(true) const firstLoading = ref(true)

View File

@@ -108,12 +108,6 @@
/> />
</van-popup> </van-popup>
<!-- 液态玻璃底部导航栏 -->
<GlassBottomNav
v-model="activeTab"
@tab-click="handleTabClick"
/>
<!-- 分类账单弹窗 --> <!-- 分类账单弹窗 -->
<CategoryBillPopup <CategoryBillPopup
v-model="billPopupVisible" v-model="billPopupVisible"
@@ -136,7 +130,6 @@ import MonthlyExpenseCard from './modules/MonthlyExpenseCard.vue'
import ExpenseCategoryCard from './modules/ExpenseCategoryCard.vue' import ExpenseCategoryCard from './modules/ExpenseCategoryCard.vue'
import IncomeNoneCategoryCard from './modules/IncomeNoneCategoryCard.vue' import IncomeNoneCategoryCard from './modules/IncomeNoneCategoryCard.vue'
import CategoryBillPopup from '@/components/CategoryBillPopup.vue' import CategoryBillPopup from '@/components/CategoryBillPopup.vue'
import GlassBottomNav from '@/components/GlassBottomNav.vue'
import { import {
// 新统一接口 // 新统一接口
getDailyStatisticsByRange, getDailyStatisticsByRange,
@@ -162,12 +155,6 @@ const messageStore = useMessageStore()
// 主题 // 主题
const theme = computed(() => messageStore.isDarkMode ? 'dark' : 'light') const theme = computed(() => messageStore.isDarkMode ? 'dark' : 'light')
// 底部导航栏
const activeTab = ref('statistics')
const handleTabClick = (_item, _index) => {
// 导航逻辑已在组件内部处理
}
// 状态管理 // 状态管理
const loading = ref(false) const loading = ref(false)
const refreshing = ref(false) const refreshing = ref(false)