118 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|     <div class="flex items-center justify-end text-xs mt-3">
 | |
|         <span>{{ texts[0] }}</span>
 | |
|         <money v-bind="{
 | |
|                 decimal: this.currencySymbol.decimal_mark,
 | |
|                 thousands: this.currencySymbol.thousands_separator,
 | |
|                 prefix: (this.currencySymbol.symbol_first) ? this.currencySymbol.symbol : '',
 | |
|                 suffix: (!this.currencySymbol.symbol_first) ? this.currencySymbol.symbol : '',
 | |
|                 precision: parseInt(this.currencySymbol.precision),
 | |
|                 masked: true
 | |
|             }"
 | |
|             :value="price"
 | |
|             disabled size="5"
 | |
|             masked
 | |
|             class="disabled-money text-right mr-1 js-conversion-input text-xs px-1"
 | |
|         ></money>
 | |
| 
 | |
|         <span class="mr-2">
 | |
|             {{ texts[1] }}
 | |
|         </span>
 | |
| 
 | |
|         <input name="currency_rate"
 | |
|             v-model="rate"
 | |
|             @input="onChange"
 | |
|             class="text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple w-16 h-10 text-right js-conversion-input"
 | |
|         />
 | |
|     </div>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
|     import {Money} from 'v-money';
 | |
| 
 | |
|     export default {
 | |
|         name: 'akaunting-currency-conversion',
 | |
| 
 | |
|         components: {
 | |
|             Money
 | |
|         },
 | |
| 
 | |
|         props: {
 | |
|             currencyConversionText: {
 | |
|                 type: String,
 | |
|                 default: 'Currency conversion'
 | |
|             },
 | |
| 
 | |
|             price: {
 | |
|                 type: String,
 | |
|                 default: 'sale'
 | |
|             },
 | |
| 
 | |
|             currecyCode: {
 | |
|                 type: String,
 | |
|                 default: 'USD'
 | |
|             },
 | |
| 
 | |
|             currencyRate: {
 | |
|                 default: 1.000,
 | |
|             },
 | |
| 
 | |
|             currencySymbol: {
 | |
|             default: {}
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         data() {
 | |
|             return {
 | |
|                 conversion: '',
 | |
|                 rate: this.currencyRate,
 | |
|                 texts: [],
 | |
|             };
 | |
|         },
 | |
| 
 | |
|         created() {
 | |
|             let conversion = this.currencyConversionText.split(':price');
 | |
| 
 | |
|             if (conversion[0]) {
 | |
|                 this.texts.push(conversion[0]);
 | |
|             }
 | |
|             
 | |
|             if (conversion[1]) {
 | |
|                 this.texts.push(conversion[1].replace(':currency_code', company_currency_code).replace(':currency_rate', ''));
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         methods: {
 | |
|             onChange() {
 | |
|                 this.$emit('change', this.rate);
 | |
| 
 | |
|                 this.currencySymbol.rate = this.rate;
 | |
|             }
 | |
|         },
 | |
| 
 | |
|         watch: {
 | |
|             currencyConversionText: function (text) {
 | |
|                 this.conversion = text.replace(':price', this.price).replace(':currency_code', this.currecyCode);
 | |
|             },
 | |
| 
 | |
|             price: function (price) {
 | |
|                 this.conversion = this.currencyConversionText.replace(':price', price).replace(':currency_code', this.currecyCode).replace();
 | |
|             },
 | |
| 
 | |
|             currecyCode: function (currecyCode) {
 | |
|                 this.conversion = this.currencyConversionText.replace(':price', this.price).replace(':currency_code', this.currecyCode).replace();
 | |
|             },
 | |
| 
 | |
|             currencyRate: function (currencyRate) {
 | |
|                 this.rate = currencyRate;
 | |
| 
 | |
|                 this.conversion = this.currencyConversionText.replace(':price', this.price).replace(':currency_code', this.currecyCode).replace();
 | |
|             },
 | |
| 
 | |
|             currencySymbol: function (currencySymbol) {
 | |
|                 this.conversion = this.currencyConversionText.replace(':price', this.price).replace(':currency_code', this.currecyCode).replace();
 | |
|             },
 | |
|         },
 | |
|     };
 | |
| </script>
 |