From 41a8b8007af68c77b5289edb043a372eca3321ba Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 13 Aug 2023 20:01:44 +0800 Subject: [PATCH] code refactor --- src/lib/category.js | 11 ++++++ src/stores/transactionCategory.js | 13 +++++++ .../categories/list/dialogs/EditDialog.vue | 38 +++++-------------- src/views/mobile/categories/EditPage.vue | 30 ++++----------- 4 files changed, 41 insertions(+), 51 deletions(-) diff --git a/src/lib/category.js b/src/lib/category.js index 89dc7036..a53125d6 100644 --- a/src/lib/category.js +++ b/src/lib/category.js @@ -1,6 +1,17 @@ import categoryConstants from '@/consts/category.js'; import transactionConstants from '@/consts/transaction.js'; +export function setCategoryModelByAnotherCategory(category, category2) { + category.id = category2.id; + category.type = category2.type; + category.parentId = category2.parentId; + category.name = category2.name; + category.icon = category2.icon; + category.color = category2.color; + category.comment = category2.comment; + category.visible = !category2.hidden; +} + export function transactionTypeToCategoryType(transactionType) { if (transactionType === transactionConstants.allTransactionTypes.Income) { return categoryConstants.allCategoryTypes.Income; diff --git a/src/stores/transactionCategory.js b/src/stores/transactionCategory.js index d87d9d61..4515110b 100644 --- a/src/stores/transactionCategory.js +++ b/src/stores/transactionCategory.js @@ -1,6 +1,8 @@ import { defineStore } from 'pinia'; import categoryConstants from '@/consts/category.js'; +import iconConstants from '@/consts/icon.js'; +import colorConstants from '@/consts/color.js'; import { isEquals } from '@/lib/common.js'; import services from '@/lib/services.js'; import logger from '@/lib/logger.js'; @@ -126,6 +128,17 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' transactionCategoryListStateInvalid: true, }), actions: { + generateNewTransactionCategoryModel(type, parentId) { + return { + type: type || categoryConstants.allCategoryTypes.Income, + name: '', + parentId: parentId || '0', + icon: iconConstants.defaultCategoryIconId, + color: colorConstants.defaultCategoryColor, + comment: '', + visible: true + }; + }, updateTransactionCategoryListInvalidState(invalidState) { this.transactionCategoryListStateInvalid = invalidState; }, diff --git a/src/views/desktop/categories/list/dialogs/EditDialog.vue b/src/views/desktop/categories/list/dialogs/EditDialog.vue index 5b712e02..b25478c2 100644 --- a/src/views/desktop/categories/list/dialogs/EditDialog.vue +++ b/src/views/desktop/categories/list/dialogs/EditDialog.vue @@ -76,6 +76,7 @@ import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js'; import categoryConstants from '@/consts/category.js'; import iconConstants from '@/consts/icon.js'; import colorConstants from '@/consts/color.js'; +import { setCategoryModelByAnotherCategory } from '@/lib/category.js'; export default { props: [ @@ -86,19 +87,14 @@ export default { 'open' ], data() { + const transactionCategoriesStore = useTransactionCategoriesStore(); + const newTransactionCategory = transactionCategoriesStore.generateNewTransactionCategoryModel(); + return { showState: false, editCategoryId: null, loading: false, - category: { - type: categoryConstants.allCategoryTypes.Income, - name: '', - parentId: '0', - icon: iconConstants.defaultCategoryIconId, - color: colorConstants.defaultCategoryColor, - comment: '', - visible: true - }, + category: newTransactionCategory, submitting: false, resolve: null, reject: null @@ -148,25 +144,19 @@ export default { self.loading = true; self.submitting = false; - self.category.id = null; - self.category.type = categoryConstants.allCategoryTypes.Income; - self.category.parentId = '0'; - self.category.name = ''; - self.category.icon = iconConstants.defaultCategoryIconId; - self.category.color = colorConstants.defaultCategoryColor; - self.category.comment = ''; - self.category.visible = true; + const newTransactionCategory = self.transactionCategoriesStore.generateNewTransactionCategoryModel(); + setCategoryModelByAnotherCategory(self.category, newTransactionCategory); if (options.id) { if (options.currentCategory) { - self.setCategory(options.currentCategory); + setCategoryModelByAnotherCategory(self.category, options.currentCategory); } self.editCategoryId = options.id; self.transactionCategoriesStore.getCategory({ categoryId: self.editCategoryId }).then(category => { - self.setCategory(category); + setCategoryModelByAnotherCategory(self.category, category); self.loading = false; }).catch(error => { self.loading = false; @@ -265,16 +255,6 @@ export default { } this.showState = false; - }, - setCategory(category) { - this.category.id = category.id; - this.category.type = category.type; - this.category.parentId = category.parentId; - this.category.name = category.name; - this.category.icon = category.icon; - this.category.color = category.color; - this.category.comment = category.comment; - this.category.visible = !category.hidden; } } } diff --git a/src/views/mobile/categories/EditPage.vue b/src/views/mobile/categories/EditPage.vue index 4e2b458d..8b0a4b29 100644 --- a/src/views/mobile/categories/EditPage.vue +++ b/src/views/mobile/categories/EditPage.vue @@ -134,6 +134,7 @@ import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js'; import categoryConstants from '@/consts/category.js'; import iconConstants from '@/consts/icon.js'; import colorConstants from '@/consts/color.js'; +import { setCategoryModelByAnotherCategory } from '@/lib/category.js'; export default { props: [ @@ -141,24 +142,17 @@ export default { 'f7router' ], data() { - const self = this; - const query = self.f7route.query; + const transactionCategoriesStore = useTransactionCategoriesStore(); + const query = this.f7route.query; + const newTransactionCategory = transactionCategoriesStore.generateNewTransactionCategoryModel(parseInt(query.type), query.parentId); + newTransactionCategory.showIconSelectionSheet = false; + newTransactionCategory.showColorSelectionSheet = false; return { editCategoryId: null, loading: false, loadingError: null, - category: { - type: parseInt(query.type), - name: '', - parentId: query.parentId, - icon: iconConstants.defaultCategoryIconId, - color: colorConstants.defaultCategoryColor, - comment: '', - visible: true, - showIconSelectionSheet: false, - showColorSelectionSheet: false - }, + category: newTransactionCategory, submitting: false }; }, @@ -216,15 +210,7 @@ export default { self.transactionCategoriesStore.getCategory({ categoryId: self.editCategoryId }).then(category => { - self.category.id = category.id; - self.category.type = category.type; - self.category.parentId = category.type.parentId; - self.category.name = category.name; - self.category.icon = category.icon; - self.category.color = category.color; - self.category.comment = category.comment; - self.category.visible = !category.hidden; - + setCategoryModelByAnotherCategory(self.category, category); self.loading = false; }).catch(error => { if (error.processed) {