213 lines
5.9 KiB
Vue
213 lines
5.9 KiB
Vue
|
<template>
|
||
|
<akaunting-modal
|
||
|
:title="title"
|
||
|
:show="display"
|
||
|
@cancel="onCancel"
|
||
|
v-if="display">
|
||
|
<template #modal-body>
|
||
|
<div class="modal-body text-left">
|
||
|
<div class="row">
|
||
|
<div class="col-md-12">
|
||
|
<base-input
|
||
|
v-model="form.name"
|
||
|
:label="text.name"
|
||
|
prepend-icon="fas fa-tag"
|
||
|
:placeholder="text.name"
|
||
|
inputGroupClasses="input-group-merge"
|
||
|
></base-input>
|
||
|
</div>
|
||
|
|
||
|
<!--
|
||
|
<akaunting-radio-group
|
||
|
:name="'enabled'"
|
||
|
:text="text.enabled"
|
||
|
:value="form.enabled"
|
||
|
@change="onEnabled"
|
||
|
:enable="text.yes"
|
||
|
:disable="text.no"
|
||
|
:col="'col-md-12'"
|
||
|
></akaunting-radio-group>
|
||
|
-->
|
||
|
</div>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<template #card-footer>
|
||
|
<div class="row">
|
||
|
<div class="col-md-12">
|
||
|
<div class="float-right">
|
||
|
<button type="button" class="btn btn-icon btn-outline-secondary" @click="onCancel">
|
||
|
<span class="btn-inner--icon"><i class="fas fa-times"></i></span>
|
||
|
<span class="btn-inner--text">{{ text.cancel }}</span>
|
||
|
</button>
|
||
|
|
||
|
<button :disabled="form.loading" type="button" class="btn btn-icon btn-success button-submit" @click="onSave">
|
||
|
<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div>
|
||
|
<span v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-save"></i></span>
|
||
|
<span v-if="!form.loading" class="btn-inner--text">{{ text.save }}</span>
|
||
|
</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</template>
|
||
|
</akaunting-modal>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import AkauntingModal from "./AkauntingModal";
|
||
|
import AkauntingRadioGroup from './forms/AkauntingRadioGroup';
|
||
|
import NProgress from 'nprogress'
|
||
|
import 'nprogress/nprogress.css'
|
||
|
import Form from './../plugins/form';
|
||
|
import BulkAction from './../plugins/bulk-action';
|
||
|
import NProgressAxios from './../plugins/nprogress-axios';
|
||
|
|
||
|
export default {
|
||
|
name: 'akaunting-dashobard',
|
||
|
|
||
|
components: {
|
||
|
AkauntingModal,
|
||
|
AkauntingRadioGroup
|
||
|
},
|
||
|
|
||
|
props: {
|
||
|
show: Boolean,
|
||
|
title: {
|
||
|
type: String,
|
||
|
default: '',
|
||
|
description: "Modal header title"
|
||
|
},
|
||
|
text: {},
|
||
|
name: {
|
||
|
type: String,
|
||
|
default: ''
|
||
|
},
|
||
|
enabled: Number,
|
||
|
type: {
|
||
|
type: String,
|
||
|
default: 'create',
|
||
|
description: "Modal header title"
|
||
|
},
|
||
|
dashboard_id: {
|
||
|
type: Number,
|
||
|
default: 0,
|
||
|
description: "Modal header title"
|
||
|
},
|
||
|
},
|
||
|
|
||
|
data() {
|
||
|
return {
|
||
|
form: {
|
||
|
loading: false,
|
||
|
name: this.name,
|
||
|
enabled: this.enabled
|
||
|
},
|
||
|
display: this.show
|
||
|
};
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
closeModal() {
|
||
|
this.$emit("update:show", false);
|
||
|
this.$emit("close");
|
||
|
},
|
||
|
onSave() {
|
||
|
this.form.loading = true;
|
||
|
|
||
|
let data = Object.assign({}, this.form);
|
||
|
delete data.loading;
|
||
|
|
||
|
var self = this;
|
||
|
|
||
|
var path = url + '/common/dashboards';
|
||
|
|
||
|
if ((self.type != 'create')) {
|
||
|
path = url + '/common/dashboards/' + self.dashboard_id;
|
||
|
data['_method'] = 'PATCH';
|
||
|
}
|
||
|
|
||
|
axios.post(path, data)
|
||
|
.then(function (response) {
|
||
|
self.form.loading = false;
|
||
|
|
||
|
if (response.data.redirect) {
|
||
|
self.form.loading = true;
|
||
|
|
||
|
window.location.href = response.data.redirect;
|
||
|
}
|
||
|
|
||
|
self.form.response = response.data;
|
||
|
})
|
||
|
.catch(function (error) {
|
||
|
this.errors.record(error.response.data.errors);
|
||
|
|
||
|
self.form.loading = false;
|
||
|
});
|
||
|
},
|
||
|
onCancel() {
|
||
|
this.display = false;
|
||
|
this.form.name = '';
|
||
|
this.form.enabled = 1;
|
||
|
|
||
|
this.$emit("cancel");
|
||
|
},
|
||
|
onEnabled(value) {
|
||
|
this.form.enabled = value;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
watch: {
|
||
|
show(val) {
|
||
|
let documentClasses = document.body.classList;
|
||
|
if (val) {
|
||
|
documentClasses.add("modal-open");
|
||
|
} else {
|
||
|
documentClasses.remove("modal-open");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style>
|
||
|
.loader10 {
|
||
|
width: 28px;
|
||
|
height: 28px;
|
||
|
border-radius: 50%;
|
||
|
position: relative;
|
||
|
animation: loader10 0.9s ease alternate infinite;
|
||
|
animation-delay: 0.36s;
|
||
|
top: 50%;
|
||
|
margin: -42px auto 0;
|
||
|
}
|
||
|
|
||
|
.loader10::after, .loader10::before {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
width: 28px;
|
||
|
height: 28px;
|
||
|
border-radius: 50%;
|
||
|
animation: loader10 0.9s ease alternate infinite;
|
||
|
}
|
||
|
|
||
|
.loader10::before {
|
||
|
left: -40px;
|
||
|
animation-delay: 0.18s;
|
||
|
}
|
||
|
|
||
|
.loader10::after {
|
||
|
right: -40px;
|
||
|
animation-delay: 0.54s;
|
||
|
}
|
||
|
|
||
|
@keyframes loader10 {
|
||
|
0% {
|
||
|
box-shadow: 0 28px 0 -28px #0052ec;
|
||
|
}
|
||
|
|
||
|
100% {
|
||
|
box-shadow: 0 28px 0 #0052ec;
|
||
|
}
|
||
|
}
|
||
|
</style>
|