Form loader

pull/1/head
saeid_01 5 years ago
parent ca0a7f70aa
commit 5679e9d2d2

@ -1,7 +1,7 @@
{ {
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=c9ebdffec50d82145867", "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js",
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=e2cd567ef427a1285194", "/js/vue/Home/app.js": "/js/vue/Home/app.js",
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=21ca2c0fd50704c54125", "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js",
"/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=ecddb140ee87bb6dfc7c", "/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js",
"/js/vue/User/app.js": "/js/vue/User/app.js?id=ba20da8154c5c04c0dd6" "/js/vue/User/app.js": "/js/vue/User/app.js"
} }

@ -0,0 +1,22 @@
<template>
<div>
<v-checkbox
:class="element.width"
:label="element.label"
:hibt="element.hint"
:color="element.color"
:append-icon="element.append_icon"
:prepend-icon="element.prepend_icon"
multiple="true"
></v-checkbox>
</div>
</template>
<script>
export default {
props:{
element:{
type: Object
}
}
}
</script>

@ -0,0 +1,9 @@
<template>
<div>
</div>
</template>
<script>
import Factory from '../FactoryPattern'
export default {};
</script>

@ -0,0 +1,22 @@
<template>
<div>
<v-text-field
:label="element.label"
:placeholder="element.placeholder"
:hint="element.hint"
:color="element.color"
:append-icon="element.append_icon"
:prepend-icon="element.prepend_icon"
:class="element.width"
></v-text-field>
</div>
</template>
<script>
export default {
props:{
element:{
type: Object
}
}
}
</script>

@ -0,0 +1,23 @@
<template>
<div>
<v-radio-group>
<v-radio
:class="element.width"
:label="element.label"
:hibt="element.hint"
:color="element.color"
:append-icon="element.append_icon"
:prepend-icon="element.prepend_icon"
></v-radio>
</v-radio-group>
</div>
</template>
<script>
export default {
props:{
element:{
type: Object
}
}
}
</script>

@ -0,0 +1,23 @@
<template>
<div>
<v-autocomplete
:label="element.label"
:placeholder="element.placeholder"
:hint="element.hint"
:color="element.color"
:append-icon="element.append_icon"
:prepend-icon="element.prepend_icon"
:class="element.width"
:multiple="element.multiple"
></v-autocomplete>
</div>
</template>
<script>
export default {
props:{
element:{
type: Object
}
}
}
</script>

@ -0,0 +1,21 @@
<template>
<div>
<v-switch
:class="element.width"
:label="element.label"
:hibt="element.hint"
:color="element.color"
:append-icon="element.append_icon"
:prepend-icon="element.prepend_icon"
></v-switch>
</div>
</template>
<script>
export default {
props:{
element:{
type: Object
}
}
}
</script>

@ -0,0 +1,22 @@
<template>
<div>
<v-textarea
:label="element.label"
:placeholder="element.placeholder"
:hint="element.hint"
:color="element.color"
:append-icon="element.append_icon"
:prepend-icon="element.prepend_icon"
:class="element.width"
></v-textarea>
</div>
</template>
<script>
export default {
props:{
element:{
type: Object
}
}
}
</script>

@ -0,0 +1,26 @@
<template>
<div>
<component v-bind:is="element.type" :options="element" ></component>
</div>
</template>
<script>
import Vue from 'vue'
const requireElement = require.context('./Elements', true, /\.vue$/);
requireElement.keys().forEach(fileName => {
// Replace ./ and .vue
const elementName = fileName.replace(/(\.\/|\.vue)/g, '')
Vue.component(elementName,
() => import(`./Elements/${elementName}.vue`)
)
});
export default {
props:{
element:{
type: Object,
required: true
}
},
}
</script>

@ -0,0 +1,34 @@
<template>
<div>
<element-factory v-for="(element, key) in elements" :element="element" :key="key"></element-factory>
</div>
</template>
<script>
import Factory from './FactoryPattern'
export default {
components:{
'element-factory' : Factory
},
data: () => ({
elements:[
{type:"wm-input", },
{type: "wm-form", children: [
{type:"wm-select", },
{type:"wm-form", children: [
{type: "wm-input"},
{type: "wm-checkbox"},
]},
{type:"wm-input", },
]},
{type:"wm-select", },
{type:"wm-checkbox", },
]
}),
props:{
// elements: {
// type: Array,
// required: true
// }
}
}
</script>

@ -49,7 +49,6 @@ export default {
} }
}, },
data: function () { data: function () {
console.log( ( this.RouteType == 'Route' ) ? 'router-link' : 'a' );
return { return {
TagType: ( this.RouteType == 'Route' ) ? 'router-link' : 'a', TagType: ( this.RouteType == 'Route' ) ? 'router-link' : 'a',
RouteAddress: ( this.RouteType == 'Route' ) ? this.Route : false, RouteAddress: ( this.RouteType == 'Route' ) ? this.Route : false,

@ -2,6 +2,7 @@ import { mapActions } from "vuex";
import globalStore from "@Global/store"; import globalStore from "@Global/store";
import authStore from "@Core/store"; import authStore from "@Core/store";
import permissionList from "@Global/utils/Permissions/list"; import permissionList from "@Global/utils/Permissions/list";
import { UserService } from "@Global/services/storage.services";
const global = { const global = {
methods: { methods: {
$_getPath(subPath) { $_getPath(subPath) {
@ -29,16 +30,20 @@ const global = {
let currentModule = globalStore.state.common.current_module; let currentModule = globalStore.state.common.current_module;
let permissions = authStore.state.auth.permissions; let permissions = authStore.state.auth.permissions;
let multiPermission = permission.split("|"); let multiPermission = permission.split("|");
let siteOwner = !!UserService.get().is_owner;
for (const iterator of multiPermission) { for (const iterator of multiPermission) {
if (iterator == '') { if (iterator == "") {
return true; return true;
} }
permission = permissionList[iterator]; permission = permissionList[iterator];
if ( if (
siteOwner ||
owner || owner ||
(permission && (permission &&
permissions[currentModule] && permissions[currentModule] &&
Object.values(permissions[currentModule]).includes(permission)) Object.values(permissions[currentModule]).includes(
permission
))
) { ) {
return true; return true;
} }

@ -11,7 +11,6 @@
:TileClass="module.title_class" :TileClass="module.title_class"
:TitleEn="module.title_en" :TitleEn="module.title_en"
:TitleFa="module.title_fa" :TitleFa="module.title_fa"
:Desc="module.description"
:GradientBegin="module.gradient_begin" :GradientBegin="module.gradient_begin"
:GradientEnd="module.gradient_end" :GradientEnd="module.gradient_end"
:ImageURL="module.img_url" :ImageURL="module.img_url"
@ -24,6 +23,7 @@
<v-icon dark>fas fa-plus</v-icon> <v-icon dark>fas fa-plus</v-icon>
</v-btn> </v-btn>
</router-link> </router-link>
<wm-wrapper></wm-wrapper>
</v-container> </v-container>
</template> </template>
@ -31,22 +31,23 @@
<script> <script>
import Tile from "@Global/components/Tiles/Tile"; import Tile from "@Global/components/Tiles/Tile";
import { mapGetters, mapActions } from 'vuex'; import Wrapper from "@Global/components/FormLoader/Wrapper";
import { mapGetters, mapActions } from "vuex";
export default { export default {
data: () => ({ data: () => ({}),
}),
components: { components: {
"wm-tile": Tile "wm-tile": Tile,
"wm-wrapper": Wrapper,
}, },
computed: { computed: {
...mapGetters("role_permission", ["getModules"]), ...mapGetters("role_permission", ["getModules"])
}, },
methods:{ methods: {
...mapActions('role_permission', ['loadModules']), ...mapActions("role_permission", ["loadModules"])
}, },
created() { created() {
this.loadModules(); this.loadModules({ home_page: true });
}, }
}; };
</script> </script>

Loading…
Cancel
Save