HomeAccounting
85 строк · 2.2 Кб
1<template>
2<span class="sum">
3<span>{{ inputValue }}</span>
4
5<span class="converted" v-if="convertedValue">
6({{ convertedValue }} <span>RUB</span>)
7</span>
8</span>
9</template>
10
11<script>
12import Currency from '../../../classes/DB/models/Currency';
13
14export default {
15name: "bills-price-output",
16props: {
17sum: {
18type: Number,
19default: 0,
20},
21currencyCode: {
22type: Number,
23default: 0,
24},
25},
26
27data: () => ({
28currencyInfo: {},
29}),
30methods: {
31getCurrencyInfo() {
32let currency = new Currency();
33let currencyInfo = currency.getCurrency(this.currencyCode);
34
35currencyInfo.then((result) => {
36this.currencyInfo = result;
37});
38
39},
40sumFormat(sum) {
41let number = sum.toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
42return number.replace(/\./, ',');
43},
44},
45computed: {
46convertedValue() {
47
48const defaultCurrency = this.$store.getters.getDefaultCurrency;
49
50if(this.currencyInfo !== '' && this.currencyCode !== defaultCurrency) {
51let sum = this.currencyInfo.value / this.currencyInfo.nominal * this.sum;
52let rounded = Math.ceil((sum)*100)/100;
53return this.sumFormat(rounded)
54}
55else {
56return 0;
57}
58},
59inputValue() {
60return this.sumFormat(this.sum);
61},
62},
63watch: {
64currencyCode() {
65this.getCurrencyInfo();
66}
67},
68mounted() {
69this.getCurrencyInfo();
70}
71}
72</script>
73
74<style scoped>
75span.converted {
76font-size: 0.9em;
77color: rgba(125, 116, 116, 0.87);
78}
79
80span.converted > span {
81text-transform: uppercase;
82font-weight: bold;
83color: rgba(106, 226, 66, 0.87);
84}
85</style>