Bind access information to the compliance model

This commit is contained in:
Eli Ribble 2026-04-09 22:42:47 +00:00
parent 3bde7a9cac
commit 86ab67e70b
No known key found for this signature in database
3 changed files with 47 additions and 42 deletions

View file

@ -21,9 +21,8 @@ body > .container-fluid {
<component
:is="Component"
:district="district"
@doComments="doComments"
@doEvidence="doEvidence"
@doContact="doContact"
@doImages="doImages"
@doLocator="doLocator"
@doPermission="doPermission"
v-model="compliance"
@ -42,17 +41,17 @@ import { computedAsync } from "@vueuse/core";
import type { Image } from "@/components/ImageUpload.vue";
import { useStoreDistrict } from "@/rmo/store/district";
import Intro from "@/rmo/content/compliance/Intro.vue";
import type { District } from "@/type/api";
import { type District, PermissionAccess } from "@/type/api";
import { Locator } from "@/type/map";
import { type Contact } from "@/rmo/content/compliance/Contact.vue";
import { type Permission } from "@/rmo/content/compliance/Permission.vue";
export interface Compliance {
comments: string;
contact?: Contact;
contact: Contact;
locator: Locator;
images: Image[];
permission?: Permission;
permission: Permission;
}
interface Props {
slug: string;
@ -62,6 +61,12 @@ const districtStore = useStoreDistrict();
const compliance = ref<Compliance>({
comments: "",
contact: {
name: "",
phone: "",
can_text: true,
email: "",
},
images: [],
locator: {
address: {
@ -80,29 +85,30 @@ const compliance = ref<Compliance>({
longitude: 0,
},
},
permission: {
access: PermissionAccess.UNSELECTED,
access_instructions: "",
availability_notes: "",
gate_code: "",
has_dog: false,
wants_scheduled: false,
},
});
const props = defineProps<Props>();
const district = computedAsync(async (): Promise<District | undefined> => {
const districts = await districtStore.list();
return districts.find((district: District) => district.slug == props.slug);
});
function doComments(comments: string) {
console.log("comments", comments);
compliance.value.comments = comments;
function doEvidence() {
console.log("evidence", compliance.value);
}
function doContact(contact: Contact | undefined) {
console.log("contact", contact);
compliance.value.contact = contact;
}
function doImages(images: Image[]) {
console.log("images", images);
compliance.value.images = images;
function doContact() {
console.log("contact", compliance.value.contact);
}
function doLocator() {
console.log("locator done", compliance.value.locator);
}
function doPermission(permission: Permission | undefined) {
console.log("permission", permission);
compliance.value.permission = permission;
function doPermission() {
console.log("permission", compliance.value.permission);
}
</script>