code refactor

This commit is contained in:
MaysWind
2021-01-07 18:10:14 +08:00
parent b008f4ed97
commit 71d55adf33
9 changed files with 575 additions and 206 deletions
+1 -1
View File
@@ -328,7 +328,7 @@ export default {
return;
}
self.$store.dispatch('addTransactionCategoryBatch', {
self.$store.dispatch('addCategories', {
categories: allCategories
}).then(() => {
self.submitting = false;
+63 -2
View File
@@ -1,8 +1,18 @@
<template>
<f7-page>
<f7-page ptr @ptr:refresh="reload">
<f7-navbar :title="$t('Transaction Categories')" :back-link="$t('Back')"></f7-navbar>
<f7-card>
<f7-card class="skeleton-text" v-if="loading">
<f7-card-content class="no-safe-areas" :padding="false">
<f7-list>
<f7-list-item title="Expense" link="#"></f7-list-item>
<f7-list-item title="Income" link="#"></f7-list-item>
<f7-list-item title="Transfer" link="#"></f7-list-item>
</f7-list>
</f7-card-content>
</f7-card>
<f7-card v-else-if="!loading">
<f7-card-content class="no-safe-areas" :padding="false">
<f7-list>
<f7-list-item :title="$t('Expense')" link="/category/list?type=2"></f7-list-item>
@@ -13,3 +23,54 @@
</f7-card>
</f7-page>
</template>
<script>
export default {
data() {
return {
loading: true
};
},
created() {
const self = this;
const router = self.$f7router;
self.loading = true;
self.$store.dispatch('loadAllCategories', {
force: false
}).then(() => {
self.loading = false;
}).catch(error => {
self.logining = false;
if (!error.processed) {
self.$toast(error.message || error);
router.back();
}
});
},
methods: {
reload(done) {
const self = this;
self.$store.dispatch('loadAllCategories', {
force: true
}).then(() => {
if (done) {
done();
}
}).catch(error => {
if (done) {
done();
}
if (!error.processed) {
self.$toast(error.message || error);
}
});
}
}
}
</script>
+12 -45
View File
@@ -150,18 +150,9 @@ export default {
self.loading = true;
self.editCategoryId = query.id;
self.$services.getTransactionCategory({
id: self.editCategoryId
}).then(response => {
const data = response.data;
if (!data || !data.success || !data.result) {
self.$toast('Unable to get category');
router.back();
return;
}
const category = data.result;
self.$store.dispatch('getCategory', {
categoryId: self.editCategoryId
}).then(category => {
self.category.id = category.id;
self.category.type = category.type;
self.category.parentId = category.type.parentId;
@@ -173,13 +164,10 @@ export default {
self.loading = false;
}).catch(error => {
self.$logger.error('failed to load category info', error);
self.loading = false;
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
router.back();
} else if (!error.processed) {
self.$toast('Unable to get category');
if (!error.processed) {
self.$toast(error.message || error);
router.back();
}
});
@@ -221,29 +209,16 @@ export default {
comment: self.category.comment
};
let promise = null;
if (!self.editCategoryId) {
promise = self.$services.addTransactionCategory(submitCategory);
} else {
if (self.editCategoryId) {
submitCategory.id = self.category.id;
submitCategory.hidden = !self.category.visible;
promise = self.$services.modifyTransactionCategory(submitCategory);
}
promise.then(response => {
self.$store.dispatch('saveCategory', {
category: submitCategory
}).then(() => {
self.submitting = false;
self.$hideLoading();
const data = response.data;
if (!data || !data.success || !data.result) {
if (!self.editCategoryId) {
self.$toast('Unable to add category');
} else {
self.$toast('Unable to save category');
}
return;
}
if (!self.editCategoryId) {
self.$toast('You have added a new category');
@@ -253,19 +228,11 @@ export default {
router.back();
}).catch(error => {
self.$logger.error('failed to save category', error);
self.submitting = false;
self.$hideLoading();
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
} else if (!error.processed) {
if (!self.editCategoryId) {
self.$toast('Unable to add category');
} else {
self.$toast('Unable to save category');
}
if (!error.processed) {
self.$toast(error.message || error);
}
});
}
+62 -143
View File
@@ -92,7 +92,6 @@
export default {
data() {
return {
categories: [],
hasSubCategories: false,
categoryType: 0,
categoryId: '',
@@ -107,6 +106,23 @@ export default {
};
},
computed: {
categories() {
if (!this.categoryId || this.categoryId === '' || this.categoryId === '0') {
if (!this.$store.state.allTransactionCategories || !this.$store.state.allTransactionCategories[this.categoryType]) {
return [];
}
return this.$store.state.allTransactionCategories[this.categoryType];
} else if (this.categoryId && this.categoryId !== '' && this.categoryId !== '0') {
if (!this.$store.state.allTransactionCategoriesMap || !this.$store.state.allTransactionCategoriesMap[this.categoryId]) {
return [];
}
return this.$store.state.allTransactionCategoriesMap[this.categoryId].subCategories;
} else {
return [];
}
},
title() {
let title = '';
@@ -171,44 +187,23 @@ export default {
self.loading = true;
self.$services.getAllTransactionCategories({
type: self.categoryType,
parentId: self.categoryId
}).then(response => {
const data = response.data;
if (!data || !data.success || !data.result) {
self.$toast('Unable to get category list');
router.back();
return;
}
if (data.result[self.categoryType]) {
self.categories = data.result[self.categoryType];
} else {
self.categories = [];
}
self.$store.dispatch('loadAllCategories', {
force: false
}).then(() => {
self.loading = false;
}).catch(error => {
self.$logger.error('failed to load category list', error);
self.logining = false;
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
router.back();
} else if (!error.processed) {
self.$toast('Unable to get category list');
if (!error.processed) {
self.$toast(error.message || error);
router.back();
}
});
},
methods: {
onPageAfterIn() {
const self = this;
const previousRoute = self.$f7router.previousRoute;
if (previousRoute && (previousRoute.path === '/category/add' || previousRoute.path === '/category/edit' || previousRoute.path === '/category/preset') && !self.loading) {
self.reload(null);
if (this.$store.state.transactionCategoryListStateInvalid && !this.loading) {
this.reload(null);
}
},
reload(done) {
@@ -219,37 +214,19 @@ export default {
const self = this;
self.$services.getAllTransactionCategories({
type: self.categoryType,
parentId: self.categoryId
}).then(response => {
self.$store.dispatch('loadAllCategories', {
force: true
}).then(() => {
if (done) {
done();
}
const data = response.data;
if (!data || !data.success || !data.result) {
self.$toast('Unable to get category list');
return;
}
if (data.result[self.categoryType]) {
self.categories = data.result[self.categoryType];
} else {
self.categories = [];
}
}).catch(error => {
self.$logger.error('failed to reload category list', error);
if (done) {
done();
}
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
} else if (!error.processed) {
self.$toast('Unable to get category list');
if (!error.processed) {
self.$toast(error.message || error);
}
});
},
@@ -263,33 +240,27 @@ export default {
this.displayOrderModified = false;
},
onSort(event) {
const self = this;
if (!event || !event.el || !event.el.id || event.el.id.indexOf('category_') !== 0) {
this.$toast('Unable to move category');
return;
}
const id = event.el.id.substr(9); // category_
let category = null;
for (let i = 0; i < this.categories.length; i++) {
if (this.categories[i].id === id) {
category = this.categories[i];
break;
}
}
if (!category || !this.categories[event.to]) {
this.$toast('Unable to move category');
return;
}
this.categories.splice(event.to, 0, this.categories.splice(event.from, 1)[0]);
this.displayOrderModified = true;
self.$store.dispatch('changeCategoryDisplayOrder', {
categoryId: id,
from: event.from,
to: event.to
}).then(() => {
self.displayOrderModified = true;
}).catch(error => {
self.$toast(error.message || error);
});
},
saveSortResult() {
const self = this;
const newDisplayOrders = [];
if (!self.displayOrderModified) {
self.showHidden = false;
@@ -298,42 +269,24 @@ export default {
}
self.displayOrderSaving = true;
for (let i = 0; i < self.categories.length; i++) {
newDisplayOrders.push({
id: self.categories[i].id,
displayOrder: i + 1
});
}
self.$showLoading();
self.$services.moveTransactionCategory({
newDisplayOrders: newDisplayOrders
}).then(response => {
self.$store.dispatch('updateCategoryDisplayOrders', {
type: self.categoryType,
parentId: self.categoryId,
}).then(() => {
self.displayOrderSaving = false;
self.$hideLoading();
const data = response.data;
if (!data || !data.success || !data.result) {
self.$toast('Unable to move category');
return;
}
self.showHidden = false;
self.sortable = false;
self.displayOrderModified = false;
}).catch(error => {
self.$logger.error('failed to save categories display order', error);
self.displayOrderSaving = false;
self.$hideLoading();
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
} else if (!error.processed) {
self.$toast('Unable to move category');
if (!error.processed) {
self.$toast(error.message || error);
}
});
},
@@ -345,37 +298,16 @@ export default {
self.$showLoading();
self.$services.hideTransactionCategory({
id: category.id,
self.$store.dispatch('hideCategory', {
category: category,
hidden: hidden
}).then(response => {
}).then(() => {
self.$hideLoading();
const data = response.data;
if (!data || !data.success || !data.result) {
if (hidden) {
self.$toast('Unable to hide this category');
} else {
self.$toast('Unable to unhide this category');
}
return;
}
category.hidden = hidden;
}).catch(error => {
self.$logger.error('failed to change category visibility', error);
self.$hideLoading();
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
} else if (!error.processed) {
if (hidden) {
self.$toast('Unable to hide this category');
} else {
self.$toast('Unable to unhide this category');
}
if (!error.processed) {
self.$toast(error.message || error);
}
});
},
@@ -399,33 +331,20 @@ export default {
self.categoryToDelete = null;
self.$showLoading();
self.$services.deleteTransactionCategory({
id: category.id
}).then(response => {
self.$hideLoading();
const data = response.data;
if (!data || !data.success || !data.result) {
self.$toast('Unable to delete this category');
return;
self.$store.dispatch('deleteCategory', {
category: category,
beforeResolve: (done) => {
app.swipeout.delete($$(`#${self.$options.filters.categoryDomId(category)}`), () => {
done();
});
}
app.swipeout.delete($$(`#${self.$options.filters.categoryDomId(category)}`), () => {
for (let i = 0; i < self.categories.length; i++) {
if (self.categories[i].id === category.id) {
self.categories.splice(i, 1);
}
}
});
}).then(() => {
self.$hideLoading();
}).catch(error => {
self.$logger.error('failed to delete category', error);
self.$hideLoading();
if (error.response && error.response.data && error.response.data.errorMessage) {
self.$toast({ error: error.response.data });
} else if (!error.processed) {
self.$toast('Unable to delete this category');
if (!error.processed) {
self.$toast(error.message || error);
}
});
}
+1 -1
View File
@@ -159,7 +159,7 @@ export default {
}
}
self.$store.dispatch('addTransactionCategoryBatch', {
self.$store.dispatch('addCategories', {
categories: categories
}).then(() => {
self.submitting = false;