fix: load sections and fields in quick entry layout builder
This commit is contained in:
parent
ab1d4644dd
commit
7e3a2f9fb7
@ -1,3 +1,72 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>Quick Entry Layout</div>
|
<div ref="parentRef" class="flex flex-col p-8 overflow-hidden">
|
||||||
|
<h2 class="flex gap-2 text-xl font-semibold leading-none h-5 mb-4">
|
||||||
|
<div>{{ __('Quick Entry Layout') }}</div>
|
||||||
|
<Badge
|
||||||
|
v-if="dirty"
|
||||||
|
:label="__('Not Saved')"
|
||||||
|
variant="subtle"
|
||||||
|
theme="orange"
|
||||||
|
/>
|
||||||
|
</h2>
|
||||||
|
<div class="flex-1 flex flex-col justify-between -m-3 p-3 gap-6 overflow-y-auto">
|
||||||
|
<div class="flex gap-6 items-end">
|
||||||
|
<FormControl
|
||||||
|
class="flex-1"
|
||||||
|
type="select"
|
||||||
|
v-model="doctype"
|
||||||
|
:label="__('DocType')"
|
||||||
|
:options="['CRM Lead', 'CRM Deal', 'Contact', 'CRM Organization']"
|
||||||
|
@change="reload"
|
||||||
|
/>
|
||||||
|
<div class="flex flex-row-reverse gap-2">
|
||||||
|
<Button
|
||||||
|
:loading="loading"
|
||||||
|
:label="__('Save')"
|
||||||
|
variant="solid"
|
||||||
|
@click="saveChanges"
|
||||||
|
/>
|
||||||
|
<Button :label="__('Reset')" @click="reload" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="sections?.data" class="">
|
||||||
|
<QuickEntryLayoutBuilder :sections="sections.data" :doctype="doctype" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import QuickEntryLayoutBuilder from '@/components/Settings/QuickEntryLayoutBuilder.vue'
|
||||||
|
import { useDebounceFn } from '@vueuse/core'
|
||||||
|
import { Badge, createResource } from 'frappe-ui'
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
|
||||||
|
const parentRef = ref(null)
|
||||||
|
const doctype = ref('CRM Lead')
|
||||||
|
const loading = ref(false)
|
||||||
|
const dirty = ref(false)
|
||||||
|
|
||||||
|
function getParams() {
|
||||||
|
return { doctype: doctype.value, type: 'Quick Entry' }
|
||||||
|
}
|
||||||
|
|
||||||
|
const sections = createResource({
|
||||||
|
url: 'crm.fcrm.doctype.crm_fields_layout.crm_fields_layout.get_fields_layout',
|
||||||
|
cache: ['quick-entry-sections', doctype.value],
|
||||||
|
params: getParams(),
|
||||||
|
onSuccess(data) {
|
||||||
|
sections.originalData = JSON.parse(JSON.stringify(data))
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
onMounted(() => useDebounceFn(reload, 100)())
|
||||||
|
|
||||||
|
function reload() {
|
||||||
|
sections.params = getParams()
|
||||||
|
sections.reload()
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveChanges() {
|
||||||
|
// TODO: Save changes
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|||||||
33
frontend/src/components/Settings/QuickEntryLayoutBuilder.vue
Normal file
33
frontend/src/components/Settings/QuickEntryLayoutBuilder.vue
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="border rounded-xl h-full inline-block w-full transform overflow-hidden bg-white text-left align-middle shadow-xl transition-all"
|
||||||
|
>
|
||||||
|
<div class="bg-white px-4 pb-6 pt-5 sm:px-6">
|
||||||
|
<div class="mb-6 flex items-center justify-between">
|
||||||
|
<div class="flex items-center space-x-2">
|
||||||
|
<header>
|
||||||
|
<h3 class="text-2xl font-semibold leading-6 text-gray-900">
|
||||||
|
{{ __('Create Lead') }}
|
||||||
|
</h3>
|
||||||
|
</header>
|
||||||
|
</div>
|
||||||
|
<Button icon="x" disabled variant="ghost" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div v-for="section in sections">
|
||||||
|
<div>{{ section.label }}</div>
|
||||||
|
<div v-for="field in section.fields">
|
||||||
|
<div>{{ field.label }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="px-4 pb-7 pt-4 sm:px-6">Actions</div> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
sections: Object,
|
||||||
|
doctype: String,
|
||||||
|
})
|
||||||
|
</script>
|
||||||
Loading…
x
Reference in New Issue
Block a user