support copy existed transaction

This commit is contained in:
MaysWind
2021-01-05 23:27:36 +08:00
parent 5820952edb
commit d4b9dab8c5
4 changed files with 33 additions and 13 deletions
+1
View File
@@ -425,6 +425,7 @@ export default {
'Edit': 'Edit', 'Edit': 'Edit',
'Remove': 'Remove', 'Remove': 'Remove',
'Delete': 'Delete', 'Delete': 'Delete',
'Duplicate': 'Duplicate',
'Search': 'Search', 'Search': 'Search',
'Sort': 'Sort', 'Sort': 'Sort',
'Date': 'Date', 'Date': 'Date',
+1
View File
@@ -425,6 +425,7 @@ export default {
'Edit': '编辑', 'Edit': '编辑',
'Remove': '移除', 'Remove': '移除',
'Delete': '删除', 'Delete': '删除',
'Duplicate': '复制',
'Search': '搜索', 'Search': '搜索',
'Sort': '排序', 'Sort': '排序',
'Date': '日期', 'Date': '日期',
+24 -13
View File
@@ -7,7 +7,7 @@
<f7-link :class="{ 'disabled': inputIsEmpty || submitting }" :text="$t(saveButtonTitle)" @click="save" v-if="!readonly"></f7-link> <f7-link :class="{ 'disabled': inputIsEmpty || submitting }" :text="$t(saveButtonTitle)" @click="save" v-if="!readonly"></f7-link>
</f7-nav-right> </f7-nav-right>
<f7-subnavbar :class="{ 'disabled': editTransactionId }"> <f7-subnavbar :class="{ 'disabled': readonly || edit }">
<f7-segmented strong> <f7-segmented strong>
<f7-button :text="$t('Expense')" :active="transaction.type === $constants.transaction.allTransactionTypes.Expense" @click="transaction.type = $constants.transaction.allTransactionTypes.Expense"></f7-button> <f7-button :text="$t('Expense')" :active="transaction.type === $constants.transaction.allTransactionTypes.Expense" @click="transaction.type = $constants.transaction.allTransactionTypes.Expense"></f7-button>
<f7-button :text="$t('Income')" :active="transaction.type === $constants.transaction.allTransactionTypes.Income" @click="transaction.type = $constants.transaction.allTransactionTypes.Income"></f7-button> <f7-button :text="$t('Income')" :active="transaction.type === $constants.transaction.allTransactionTypes.Income" @click="transaction.type = $constants.transaction.allTransactionTypes.Income"></f7-button>
@@ -260,6 +260,7 @@ export default {
allCategories: {}, allCategories: {},
allTags: [], allTags: [],
readonly: false, readonly: false,
edit: false,
loading: true, loading: true,
submitting: false, submitting: false,
showAccountBalance: self.$settings.isShowAccountBalance(), showAccountBalance: self.$settings.isShowAccountBalance(),
@@ -274,14 +275,14 @@ export default {
title() { title() {
if (this.readonly) { if (this.readonly) {
return 'Transaction Detail'; return 'Transaction Detail';
} else if (!this.editTransactionId) { } else if (!this.edit) {
return 'Add Transaction'; return 'Add Transaction';
} else { } else {
return 'Edit Transaction'; return 'Edit Transaction';
} }
}, },
saveButtonTitle() { saveButtonTitle() {
if (!this.editTransactionId) { if (!this.edit) {
return 'Add'; return 'Add';
} else { } else {
return 'Save'; return 'Save';
@@ -408,6 +409,7 @@ export default {
const router = self.$f7router; const router = self.$f7router;
self.readonly = self.$f7route.path === '/transaction/detail'; self.readonly = self.$f7route.path === '/transaction/detail';
self.edit = self.$f7route.path === '/transaction/edit';
self.loading = true; self.loading = true;
const promises = [ const promises = [
@@ -417,8 +419,11 @@ export default {
]; ];
if (query.id) { if (query.id) {
self.editTransactionId = query.id; if (self.edit) {
promises.push(self.$services.getTransaction({ id: self.editTransactionId })); self.editTransactionId = query.id;
}
promises.push(self.$services.getTransaction({ id: query.id }));
} }
if (query.type && query.type !== '0' && if (query.type && query.type !== '0' &&
@@ -450,7 +455,7 @@ export default {
return; return;
} }
if (self.editTransactionId && (!responses[3] || !responses[3].data || !responses[3].data.success || !responses[3].data.result)) { if (query.id && (!responses[3] || !responses[3].data || !responses[3].data.success || !responses[3].data.result)) {
self.$toast('Unable to get transaction'); self.$toast('Unable to get transaction');
router.back(); router.back();
return; return;
@@ -518,10 +523,13 @@ export default {
} }
} }
if (self.editTransactionId) { if (query.id) {
const transaction = responses[3].data.result; const transaction = responses[3].data.result;
self.transaction.id = transaction.id; if (self.edit) {
self.transaction.id = transaction.id;
}
self.transaction.type = transaction.type; self.transaction.type = transaction.type;
if (self.transaction.type === self.$constants.transaction.allTransactionTypes.Expense) { if (self.transaction.type === self.$constants.transaction.allTransactionTypes.Expense) {
@@ -532,8 +540,11 @@ export default {
self.transaction.transferCategory = transaction.categoryId; self.transaction.transferCategory = transaction.categoryId;
} }
self.transaction.unixTime = transaction.time; if (self.edit) {
self.transaction.time = self.$utilities.formatUnixTime(transaction.time, 'YYYY-MM-DDTHH:mm'); self.transaction.unixTime = transaction.time;
self.transaction.time = self.$utilities.formatUnixTime(transaction.time, 'YYYY-MM-DDTHH:mm');
}
self.transaction.sourceAccountId = transaction.sourceAccountId; self.transaction.sourceAccountId = transaction.sourceAccountId;
self.transaction.destinationAccountId = transaction.destinationAccountId; self.transaction.destinationAccountId = transaction.destinationAccountId;
self.transaction.sourceAmount = transaction.sourceAmount; self.transaction.sourceAmount = transaction.sourceAmount;
@@ -593,7 +604,7 @@ export default {
let promise = null; let promise = null;
if (!self.editTransactionId) { if (!self.edit) {
promise = self.$services.addTransaction(submitTransaction); promise = self.$services.addTransaction(submitTransaction);
} else { } else {
submitTransaction.id = self.transaction.id; submitTransaction.id = self.transaction.id;
@@ -606,7 +617,7 @@ export default {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
if (!self.editTransactionId) { if (!self.edit) {
self.$toast('Unable to add transaction'); self.$toast('Unable to add transaction');
} else { } else {
self.$toast('Unable to save transaction'); self.$toast('Unable to save transaction');
@@ -614,7 +625,7 @@ export default {
return; return;
} }
if (!self.editTransactionId) { if (!self.edit) {
self.$toast('You have added a new transaction'); self.$toast('You have added a new transaction');
} else { } else {
self.$toast('You have saved this transaction'); self.$toast('You have saved this transaction');
+7
View File
@@ -204,6 +204,10 @@
</span> </span>
</div> </div>
<f7-swipeout-actions right> <f7-swipeout-actions right>
<f7-swipeout-button color="primary" close
:text="$t('Duplicate')"
v-if="transaction.type !== $constants.transaction.allTransactionTypes.ModifyBalance"
@click="duplicate(transaction)"></f7-swipeout-button>
<f7-swipeout-button color="orange" close <f7-swipeout-button color="orange" close
:text="$t('Edit')" :text="$t('Edit')"
v-if="transaction.type !== $constants.transaction.allTransactionTypes.ModifyBalance" v-if="transaction.type !== $constants.transaction.allTransactionTypes.ModifyBalance"
@@ -720,6 +724,9 @@ export default {
this.query.keyword = keyword; this.query.keyword = keyword;
this.reload(null); this.reload(null);
}, },
duplicate(transaction) {
this.$f7router.navigate('/transaction/add?id=' + transaction.id);
},
edit(transaction) { edit(transaction) {
this.$f7router.navigate('/transaction/edit?id=' + transaction.id); this.$f7router.navigate('/transaction/edit?id=' + transaction.id);
}, },