169 lines
6.2 KiB
Vue
169 lines
6.2 KiB
Vue
<script setup>
|
|
import { Card, CardContent, CardHeader, CardTitle } from "@/Components/ui/card";
|
|
import { Label } from "@/Components/ui/label";
|
|
import { Input } from "@/Components/ui/input";
|
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/Components/ui/select";
|
|
import { Checkbox } from "@/Components/ui/checkbox";
|
|
import { Button } from "@/Components/ui/button";
|
|
import AppMultiSelect from "@/Components/app/ui/AppMultiSelect.vue";
|
|
|
|
const props = defineProps({
|
|
form: { type: Object, required: true },
|
|
clients: { type: Array, default: () => [] },
|
|
segments: { type: Array, default: () => [] },
|
|
actions: { type: Array, default: () => [] },
|
|
decisions: { type: Array, default: () => [] },
|
|
canChangeClient: { type: Boolean, default: true },
|
|
});
|
|
|
|
const emit = defineEmits(["save"]);
|
|
</script>
|
|
|
|
<template>
|
|
<Card>
|
|
<CardHeader>
|
|
<CardTitle>Osnovne informacije</CardTitle>
|
|
</CardHeader>
|
|
<CardContent class="space-y-6">
|
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
|
<div class="space-y-2">
|
|
<Label for="name">Ime predloge</Label>
|
|
<Input id="name" v-model="form.name" type="text" />
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="source_type">Vir</Label>
|
|
<Select v-model="form.source_type">
|
|
<SelectTrigger id="source_type">
|
|
<SelectValue />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
<SelectItem value="csv">CSV</SelectItem>
|
|
<SelectItem value="xml">XML</SelectItem>
|
|
<SelectItem value="xls">XLS</SelectItem>
|
|
<SelectItem value="xlsx">XLSX</SelectItem>
|
|
<SelectItem value="json">JSON</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="default_record_type">Privzeti tip zapisa</Label>
|
|
<Input
|
|
id="default_record_type"
|
|
v-model="form.default_record_type"
|
|
type="text"
|
|
placeholder="npr.: account, person"
|
|
/>
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="client">Naročnik (izbirno)</Label>
|
|
<Select v-model="form.client_uuid" :disabled="!canChangeClient">
|
|
<SelectTrigger id="client">
|
|
<SelectValue placeholder="Globalno (brez naročnika)" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
<SelectItem :value="null">Globalno (brez naročnika)</SelectItem>
|
|
<SelectItem v-for="c in clients || []" :key="c.uuid" :value="c.uuid">
|
|
{{ c.name }}
|
|
</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
<p v-if="!canChangeClient" class="text-xs text-amber-600">
|
|
Ni mogoče spremeniti naročnika, ker ta predloga že vsebuje preslikave.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="delimiter">Privzeti ločilni znak (CSV)</Label>
|
|
<Select v-model="form.meta.delimiter">
|
|
<SelectTrigger id="delimiter">
|
|
<SelectValue placeholder="(Auto-detect)" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
|
|
<SelectItem value=",">Vejica ,</SelectItem>
|
|
<SelectItem value=";">Podpičje ;</SelectItem>
|
|
<SelectItem value="\t">Tab \t</SelectItem>
|
|
<SelectItem value="|">Pipe |</SelectItem>
|
|
<SelectItem value=" ">Presledek ␠</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
<p class="text-xs text-muted-foreground">
|
|
Pusti prazno za samodejno zaznavo. Uporabi, ko zaznavanje ne deluje pravilno.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="segment">Privzeti segment</Label>
|
|
<Select v-model="form.meta.segment_id">
|
|
<SelectTrigger id="segment">
|
|
<SelectValue placeholder="(brez)" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
<SelectItem :value="null">(brez)</SelectItem>
|
|
<SelectItem v-for="s in segments || []" :key="s.id" :value="s.id">
|
|
{{ s.name }}
|
|
</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="action">Privzeto dejanje (post-contract activity)</Label>
|
|
<Select v-model="form.meta.action_id">
|
|
<SelectTrigger id="action">
|
|
<SelectValue placeholder="(brez)" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
<SelectItem :value="null">(brez)</SelectItem>
|
|
<SelectItem v-for="a in actions || []" :key="a.id" :value="a.id">
|
|
{{ a.name }}
|
|
</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
|
|
<div class="space-y-2">
|
|
<Label for="decision">Privzeta odločitev (post-contract)</Label>
|
|
<Select v-model="form.meta.decision_id" :disabled="!form.meta.action_id">
|
|
<SelectTrigger id="decision">
|
|
<SelectValue placeholder="(brez)" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
<SelectItem :value="null">(brez)</SelectItem>
|
|
<SelectItem v-for="d in decisions || []" :key="d.id" :value="d.id">
|
|
{{ d.name }}
|
|
</SelectItem>
|
|
</SelectContent>
|
|
</Select>
|
|
<p v-if="!form.meta.action_id" class="text-xs text-muted-foreground">
|
|
Najprej izberi dejanje, nato odločitev.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex items-center gap-6">
|
|
<div class="flex items-center gap-2">
|
|
<Checkbox
|
|
id="is_active"
|
|
:checked="form.is_active"
|
|
@update:checked="form.is_active = $event"
|
|
/>
|
|
<Label for="is_active" class="cursor-pointer">Aktivna</Label>
|
|
</div>
|
|
<div class="flex items-center gap-2">
|
|
<Checkbox
|
|
id="reactivate"
|
|
:checked="form.reactivate"
|
|
@update:checked="form.reactivate = $event"
|
|
/>
|
|
<Label for="reactivate" class="cursor-pointer">Reaktivacija</Label>
|
|
</div>
|
|
<Button @click="emit('save')" class="ml-auto">Shrani</Button>
|
|
</div>
|
|
</CardContent>
|
|
</Card>
|
|
</template>
|