165 lines
5.1 KiB
Vue
165 lines
5.1 KiB
Vue
|
<template>
|
||
|
<div class="row col-md-6 pr-0">
|
||
|
<base-input :label="title"
|
||
|
name="recurring_frequency"
|
||
|
:class="frequencyClasses"
|
||
|
:error="frequencyError">
|
||
|
<el-select v-model="recurring_frequency" @input="change" filterable
|
||
|
:placeholder="placeholder">
|
||
|
<template slot="prefix">
|
||
|
<span class="el-input__suffix-inner el-select-icon">
|
||
|
<i :class="'el-input__icon el-icon-refresh'"></i>
|
||
|
</span>
|
||
|
</template>
|
||
|
|
||
|
<el-option v-for="(label, value) in frequencyOptions"
|
||
|
:key="label"
|
||
|
:label="label"
|
||
|
:value="value">
|
||
|
</el-option>
|
||
|
</el-select>
|
||
|
</base-input>
|
||
|
|
||
|
<base-input :label="''"
|
||
|
name="recurring_interval"
|
||
|
type="number"
|
||
|
:value="0"
|
||
|
class="recurring-single"
|
||
|
:class="invertalClasses"
|
||
|
:error="intervalError"
|
||
|
v-model="recurring_interval"
|
||
|
>
|
||
|
</base-input>
|
||
|
|
||
|
<base-input :label="''"
|
||
|
name="recurring_custom_frequency"
|
||
|
class="recurring-single"
|
||
|
:class="customFrequencyClasses"
|
||
|
:error="customFrequencyError"
|
||
|
>
|
||
|
<el-select v-model="recurring_custom_frequency" @input="change" filterable
|
||
|
:placeholder="placeholder">
|
||
|
<el-option v-for="(label, value) in customFrequencyOptions"
|
||
|
:key="label"
|
||
|
:label="label"
|
||
|
:value="value">
|
||
|
</el-option>
|
||
|
</el-select>
|
||
|
</base-input>
|
||
|
|
||
|
<base-input :label="''"
|
||
|
name="recurring_count"
|
||
|
type="number"
|
||
|
:value="0"
|
||
|
class="recurring-single"
|
||
|
:class="countClasses"
|
||
|
:error="countError"
|
||
|
v-model="recurring_count"
|
||
|
>
|
||
|
</base-input>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import { Select, Option } from 'element-ui'
|
||
|
|
||
|
export default {
|
||
|
name: 'akaunting-recurring',
|
||
|
|
||
|
components: {
|
||
|
[Select.name]: Select,
|
||
|
[Option.name]: Option,
|
||
|
},
|
||
|
|
||
|
props: {
|
||
|
title: {
|
||
|
type: String,
|
||
|
default: '',
|
||
|
description: "Modal header title"
|
||
|
},
|
||
|
placeholder: {
|
||
|
type: String,
|
||
|
default: '',
|
||
|
description: "Modal header title"
|
||
|
},
|
||
|
formClasses: null,
|
||
|
formError: null,
|
||
|
|
||
|
frequencyOptions: null,
|
||
|
frequencyValue: null,
|
||
|
frequencyError: null,
|
||
|
|
||
|
intervalValue: null,
|
||
|
intervalError: null,
|
||
|
|
||
|
customFrequencyOptions: null,
|
||
|
customFrequencyValue: null,
|
||
|
customFrequencyError: null,
|
||
|
|
||
|
countValue: null,
|
||
|
countError: null,
|
||
|
|
||
|
icon: {
|
||
|
type: String,
|
||
|
description: "Prepend icon (left)"
|
||
|
}
|
||
|
},
|
||
|
|
||
|
data() {
|
||
|
return {
|
||
|
recurring_frequency: this.frequencyValue,
|
||
|
recurring_interval: this.intervalValue,
|
||
|
recurring_custom_frequency: this.customFrequencyValue,
|
||
|
recurring_count: this.countValue,
|
||
|
frequencyClasses: 'col-md-12',
|
||
|
invertalClasses: 'col-md-2 d-none',
|
||
|
customFrequencyClasses: 'col-md-4 d-none',
|
||
|
countClasses: 'col-md-2 d-none'
|
||
|
}
|
||
|
},
|
||
|
|
||
|
mounted() {
|
||
|
this.recurring_frequency = this.frequencyValue;
|
||
|
|
||
|
this.frequencyChanges();
|
||
|
|
||
|
this.$emit('recurring_frequency', this.recurring_frequency);
|
||
|
this.$emit('recurring_interval', this.recurring_interval);
|
||
|
this.$emit('recurring_custom_frequency', this.recurring_custom_frequency);
|
||
|
this.$emit('recurring_count', this.recurring_count);
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
change() {
|
||
|
this.$emit('change', this.recurring_frequency);
|
||
|
|
||
|
this.$emit('recurring_frequency', this.recurring_frequency);
|
||
|
this.$emit('recurring_interval', this.recurring_interval);
|
||
|
this.$emit('recurring_custom_frequency', this.recurring_custom_frequency);
|
||
|
this.$emit('recurring_count', this.recurring_count);
|
||
|
|
||
|
this.frequencyChanges();
|
||
|
},
|
||
|
|
||
|
frequencyChanges() {
|
||
|
if (this.recurring_frequency == 'custom') {
|
||
|
this.frequencyClasses = 'col-md-4';
|
||
|
this.invertalClasses = 'col-md-2';
|
||
|
this.customFrequencyClasses = 'col-md-4';
|
||
|
this.countClasses = 'col-md-2 pr-0';
|
||
|
} else if (this.recurring_frequency == 'no' || this.recurring_frequency == '') {
|
||
|
this.frequencyClasses = 'col-md-12 pr-0';
|
||
|
this.invertalClasses = 'col-md-2 d-none';
|
||
|
this.customFrequencyClasses = 'col-md-4 d-none';
|
||
|
this.countClasses = 'col-md-2 d-none';
|
||
|
} else {
|
||
|
this.frequencyClasses = 'col-md-10';
|
||
|
this.invertalClasses = 'col-md-2 d-none';
|
||
|
this.customFrequencyClasses = 'col-md-4 d-none';
|
||
|
this.countClasses = 'col-md-2 pr-0';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|