2020-02-18 11:49:28 +03:00
|
|
|
import Vue from 'vue';
|
|
|
|
|
2019-11-16 10:21:14 +03:00
|
|
|
import axios from 'axios';
|
|
|
|
|
|
|
|
import AkauntingSearch from './../components/AkauntingSearch';
|
|
|
|
import AkauntingModal from './../components/AkauntingModal';
|
2020-02-09 19:03:26 +03:00
|
|
|
import AkauntingMoney from './../components/AkauntingMoney';
|
2020-01-29 12:34:51 +03:00
|
|
|
import AkauntingModalAddNew from './../components/AkauntingModalAddNew';
|
2019-11-16 10:21:14 +03:00
|
|
|
import AkauntingRadioGroup from './../components/forms/AkauntingRadioGroup';
|
|
|
|
import AkauntingSelect from './../components/AkauntingSelect';
|
2020-01-20 17:48:46 +03:00
|
|
|
import AkauntingSelectRemote from './../components/AkauntingSelectRemote';
|
2019-11-16 10:21:14 +03:00
|
|
|
import AkauntingDate from './../components/AkauntingDate';
|
|
|
|
import AkauntingRecurring from './../components/AkauntingRecurring';
|
2020-03-10 17:43:19 +03:00
|
|
|
import AkauntingHtmlEditor from './../components/AkauntingHtmlEditor';
|
2020-08-26 17:28:46 +03:00
|
|
|
import AkauntingCountdown from './../components/AkauntingCountdown';
|
2019-11-16 10:21:14 +03:00
|
|
|
|
|
|
|
import NProgress from 'nprogress';
|
|
|
|
import 'nprogress/nprogress.css';
|
|
|
|
import NProgressAxios from './../plugins/nprogress-axios';
|
|
|
|
|
2020-03-10 17:43:19 +03:00
|
|
|
import { Select, Option, Steps, Step, Button, Link, Tooltip, ColorPicker } from 'element-ui';
|
2019-11-16 10:21:14 +03:00
|
|
|
|
2020-02-03 12:21:22 +03:00
|
|
|
import Form from './../plugins/form';
|
|
|
|
|
2019-11-16 10:21:14 +03:00
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
AkauntingSearch,
|
|
|
|
AkauntingRadioGroup,
|
|
|
|
AkauntingSelect,
|
2020-01-20 17:48:46 +03:00
|
|
|
AkauntingSelectRemote,
|
2020-02-09 19:03:26 +03:00
|
|
|
AkauntingMoney,
|
2019-11-16 10:21:14 +03:00
|
|
|
AkauntingModal,
|
2020-01-29 12:34:51 +03:00
|
|
|
AkauntingModalAddNew,
|
2019-11-16 10:21:14 +03:00
|
|
|
AkauntingDate,
|
|
|
|
AkauntingRecurring,
|
2020-03-10 17:43:19 +03:00
|
|
|
AkauntingHtmlEditor,
|
2020-08-26 17:28:46 +03:00
|
|
|
AkauntingCountdown,
|
2019-11-16 10:21:14 +03:00
|
|
|
[Select.name]: Select,
|
2020-01-29 12:34:51 +03:00
|
|
|
[Option.name]: Option,
|
|
|
|
[Steps.name]: Steps,
|
|
|
|
[Step.name]: Step,
|
|
|
|
[Button.name]: Button,
|
2020-02-10 20:41:00 +03:00
|
|
|
[Link.name]: Link,
|
2020-02-12 16:09:44 +03:00
|
|
|
[Tooltip.name]: Tooltip,
|
2020-03-10 17:43:19 +03:00
|
|
|
[ColorPicker.name]: ColorPicker,
|
2019-11-16 10:21:14 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
data: function () {
|
|
|
|
return {
|
2020-01-29 12:34:51 +03:00
|
|
|
component: '',
|
2020-02-29 11:40:33 +03:00
|
|
|
currency: null,
|
2019-11-16 10:21:14 +03:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
directives: {
|
2020-02-09 19:03:26 +03:00
|
|
|
//money: VMoney
|
2019-11-16 10:21:14 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
mounted() {
|
|
|
|
this.checkNotify();
|
2020-07-23 11:04:25 +03:00
|
|
|
|
|
|
|
if (aka_currency) {
|
|
|
|
this.currency = aka_currency;
|
|
|
|
}
|
2019-11-16 10:21:14 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
// Check Default set notify > store / update action
|
|
|
|
checkNotify: function () {
|
|
|
|
if (!flash_notification) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
flash_notification.forEach(notify => {
|
|
|
|
let type = notify.level;
|
|
|
|
|
|
|
|
this.$notify({
|
|
|
|
message: notify.message,
|
|
|
|
timeout: 5000,
|
|
|
|
icon: 'fas fa-bell',
|
|
|
|
type
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
// Form Submit
|
|
|
|
onSubmit() {
|
|
|
|
this.form.submit();
|
|
|
|
},
|
|
|
|
|
|
|
|
onHandleFileUpload(key, event) {
|
|
|
|
this.form[key] = '';
|
|
|
|
this.form[key] = event.target.files[0];
|
|
|
|
},
|
|
|
|
|
|
|
|
// Bulk Action Select all
|
|
|
|
onSelectAll() {
|
|
|
|
this.bulk_action.selectAll();
|
|
|
|
},
|
|
|
|
|
|
|
|
// Bulk Action Select checked/ unchecked
|
|
|
|
onSelect() {
|
|
|
|
this.bulk_action.select();
|
|
|
|
},
|
|
|
|
|
|
|
|
// Bulk Action use selected Change
|
|
|
|
onChange(event) {
|
|
|
|
var result = this.bulk_action.change(event);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Bulk Action use selected Action
|
|
|
|
onAction() {
|
|
|
|
this.bulk_action.action();
|
|
|
|
},
|
|
|
|
|
|
|
|
// Bulk Action modal cancel
|
|
|
|
onCancel() {
|
|
|
|
this.bulk_action.modal = false;
|
|
|
|
},
|
|
|
|
|
|
|
|
// Bulk Action Clear selected items
|
|
|
|
onClear() {
|
|
|
|
this.bulk_action.modal = false;
|
|
|
|
|
|
|
|
this.bulk_action.clear();
|
|
|
|
},
|
|
|
|
|
|
|
|
// List Enabled column status changes
|
|
|
|
onStatus(item_id, event) {
|
|
|
|
this.bulk_action.status(item_id, event, this.$notify);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Actions > Delete
|
|
|
|
confirmDelete(url, title, message, button_cancel, button_delete) {
|
2020-02-09 13:10:26 +03:00
|
|
|
let confirm = {
|
|
|
|
url: url,
|
|
|
|
title: title,
|
|
|
|
message: message,
|
|
|
|
button_cancel: button_cancel,
|
|
|
|
button_delete: button_delete,
|
|
|
|
show: true
|
|
|
|
};
|
|
|
|
|
|
|
|
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
|
|
|
resolve({
|
2020-08-22 16:07:36 +03:00
|
|
|
template : '<div id="dynamic-delete-component"><akaunting-modal v-if="confirm.show" :show="confirm.show" :title="confirm.title" :message="confirm.message" :button_cancel="confirm.button_cancel" :button_delete="confirm.button_delete" @confirm="onDelete" @cancel="cancelDelete"></akaunting-modal></div>',
|
2020-02-09 13:10:26 +03:00
|
|
|
|
|
|
|
components: {
|
|
|
|
AkauntingModal,
|
|
|
|
},
|
|
|
|
|
|
|
|
data: function () {
|
|
|
|
return {
|
|
|
|
confirm: confirm,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
// Delete action post
|
|
|
|
async onDelete() {
|
|
|
|
let promise = Promise.resolve(axios({
|
|
|
|
method: 'DELETE',
|
|
|
|
url: this.confirm.url,
|
|
|
|
}));
|
|
|
|
|
|
|
|
promise.then(response => {
|
|
|
|
if (response.data.redirect) {
|
|
|
|
window.location.href = response.data.redirect;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
this.success = false;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
// Close modal empty default value
|
|
|
|
cancelDelete() {
|
|
|
|
this.confirm.show = false;
|
|
|
|
},
|
|
|
|
}
|
|
|
|
})
|
2019-11-16 10:21:14 +03:00
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
// Change bank account get money and currency rate
|
|
|
|
onChangeAccount(account_id) {
|
|
|
|
axios.get(url + '/banking/accounts/currency', {
|
|
|
|
params: {
|
|
|
|
account_id: account_id
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.then(response => {
|
2020-06-04 22:21:37 +03:00
|
|
|
this.currency = response.data;
|
|
|
|
|
2019-11-16 10:21:14 +03:00
|
|
|
this.form.currency_code = response.data.currency_code;
|
|
|
|
this.form.currency_rate = response.data.currency_rate;
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
});
|
2019-12-16 17:22:34 +03:00
|
|
|
},
|
|
|
|
|
2020-02-29 11:40:33 +03:00
|
|
|
// Change currency get money
|
|
|
|
onChangeCurrency(currency_code) {
|
|
|
|
axios.get(url + '/settings/currencies/currency', {
|
|
|
|
params: {
|
|
|
|
code: currency_code
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.then(response => {
|
|
|
|
this.currency = response.data;
|
|
|
|
|
|
|
|
this.form.currency_code = response.data.code;
|
|
|
|
this.form.currency_rate = response.data.rate;
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
// Pages limit change
|
2019-12-16 17:22:34 +03:00
|
|
|
onChangePaginationLimit(event) {
|
|
|
|
let path = '';
|
|
|
|
|
|
|
|
if (window.location.search.length) {
|
|
|
|
if (window.location.search.includes('limit')) {
|
|
|
|
let queries = [];
|
|
|
|
let query = window.location.search;
|
|
|
|
|
|
|
|
query = query.replace('?', '');
|
|
|
|
queries = query.split('&');
|
|
|
|
|
|
|
|
path = window.location.origin + window.location.pathname;
|
|
|
|
|
|
|
|
queries.forEach(function (_query, index) {
|
|
|
|
let query_partials = _query.split('=');
|
|
|
|
|
|
|
|
if (index == 0) {
|
|
|
|
path += '?'
|
|
|
|
} else {
|
|
|
|
path += '&';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (query_partials[0] == 'limit') {
|
|
|
|
path += 'limit=' + event.target.value;
|
|
|
|
} else {
|
|
|
|
path += query_partials[0] + '=' + query_partials[1];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
path = window.location.href + '&limit=' + event.target.value;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
path = window.location.href + '?limit=' + event.target.value;
|
|
|
|
}
|
|
|
|
|
|
|
|
window.location.href = path;
|
2020-01-29 12:34:51 +03:00
|
|
|
},
|
|
|
|
|
2020-02-29 11:40:33 +03:00
|
|
|
// Dynamic component get path view and show it.
|
2020-01-29 12:34:51 +03:00
|
|
|
onDynamicComponent(path)
|
|
|
|
{
|
|
|
|
axios.get(path)
|
|
|
|
.then(response => {
|
|
|
|
let html = response.data.html;
|
|
|
|
|
|
|
|
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
|
|
|
resolve({
|
|
|
|
template : '<div id="dynamic-component">' + html + '</div>',
|
|
|
|
|
|
|
|
components: {
|
|
|
|
AkauntingSearch,
|
|
|
|
AkauntingRadioGroup,
|
|
|
|
AkauntingSelect,
|
|
|
|
AkauntingSelectRemote,
|
|
|
|
AkauntingModal,
|
|
|
|
AkauntingModalAddNew,
|
|
|
|
AkauntingDate,
|
|
|
|
AkauntingRecurring,
|
|
|
|
[Select.name]: Select,
|
|
|
|
[Option.name]: Option,
|
|
|
|
[Steps.name]: Steps,
|
|
|
|
[Step.name]: Step,
|
|
|
|
[Button.name]: Button,
|
|
|
|
},
|
|
|
|
|
|
|
|
created: function() {
|
2020-09-25 17:35:48 +03:00
|
|
|
this.form = new Form('form-dynamic-component');
|
2020-01-29 12:34:51 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
mounted() {
|
2020-02-04 16:33:01 +03:00
|
|
|
let form_id = document.getElementById('dynamic-component').querySelectorAll('form')[1].id;
|
2020-01-29 12:34:51 +03:00
|
|
|
|
|
|
|
this.form = new Form(form_id);
|
|
|
|
},
|
|
|
|
|
|
|
|
data: function () {
|
|
|
|
return {
|
|
|
|
form: {},
|
|
|
|
dynamic: {
|
|
|
|
data: dynamic_data
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
.catch(e => {
|
|
|
|
this.errors.push(e);
|
|
|
|
})
|
|
|
|
.finally(function () {
|
|
|
|
// always executed
|
|
|
|
});
|
|
|
|
},
|
2020-07-23 11:04:25 +03:00
|
|
|
|
2020-07-24 12:46:44 +03:00
|
|
|
// Delete attachment file
|
|
|
|
onDeleteFile(file_id, url, title, message, button_cancel, button_delete) {
|
|
|
|
let file_data = {
|
|
|
|
page: null,
|
|
|
|
key: null,
|
|
|
|
value: null,
|
|
|
|
ajax: true,
|
|
|
|
redirect: window.location.href
|
|
|
|
};
|
|
|
|
|
|
|
|
if (this.form['page' + file_id]) {
|
|
|
|
file_data.page = this.form['page' + file_id];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.form['key' + file_id]) {
|
|
|
|
file_data.key = this.form['key' + file_id];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.form['value' + file_id]) {
|
|
|
|
file_data.value = this.form['value' + file_id];
|
|
|
|
}
|
|
|
|
|
|
|
|
let confirm = {
|
|
|
|
url: url,
|
|
|
|
title: title,
|
|
|
|
message: message,
|
|
|
|
button_cancel: button_cancel,
|
|
|
|
button_delete: button_delete,
|
|
|
|
file_data: file_data,
|
|
|
|
show: true
|
|
|
|
};
|
|
|
|
|
|
|
|
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
|
|
|
resolve({
|
2020-08-22 16:07:36 +03:00
|
|
|
template : '<div id="dynamic-delete-file-component"><akaunting-modal v-if="confirm.show" :show="confirm.show" :title="confirm.title" :message="confirm.message" :button_cancel="confirm.button_cancel" :button_delete="confirm.button_delete" @confirm="onDelete" @cancel="cancelDelete"></akaunting-modal></div>',
|
2020-07-24 12:46:44 +03:00
|
|
|
|
|
|
|
components: {
|
|
|
|
AkauntingModal,
|
|
|
|
},
|
|
|
|
|
|
|
|
data: function () {
|
|
|
|
return {
|
|
|
|
confirm: confirm,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
// Delete action post
|
|
|
|
async onDelete() {
|
|
|
|
let promise = Promise.resolve(axios({
|
|
|
|
method: 'DELETE',
|
|
|
|
url: this.confirm.url,
|
|
|
|
data: file_data
|
|
|
|
}));
|
|
|
|
|
|
|
|
promise.then(response => {
|
|
|
|
if (response.data.redirect) {
|
|
|
|
window.location.href = response.data.redirect;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
this.success = false;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
// Close modal empty default value
|
|
|
|
cancelDelete() {
|
|
|
|
this.confirm.show = false;
|
|
|
|
},
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
2019-11-16 10:21:14 +03:00
|
|
|
}
|
|
|
|
}
|