89 lines
2.2 KiB
Vue
89 lines
2.2 KiB
Vue
<template>
|
|
<ListView
|
|
:columns="columns"
|
|
:rows="rows"
|
|
:options="{
|
|
getRowRoute: (row) => ({ name: 'Lead', params: { leadId: row.name } }),
|
|
}"
|
|
row-key="name"
|
|
>
|
|
<ListHeader class="mx-5" />
|
|
<ListRows>
|
|
<ListRow
|
|
class="mx-5"
|
|
v-for="row in rows"
|
|
:key="row.name"
|
|
v-slot="{ column, item }"
|
|
:row="row"
|
|
>
|
|
<ListRowItem :item="item">
|
|
<template #prefix>
|
|
<div v-if="column.key === 'status'">
|
|
<IndicatorIcon :class="item.color" />
|
|
</div>
|
|
<div v-else-if="column.key === 'lead_name'">
|
|
<Avatar
|
|
v-if="item.label"
|
|
class="flex items-center"
|
|
:image="item.image"
|
|
:label="item.image_label"
|
|
size="sm"
|
|
/>
|
|
</div>
|
|
<div v-else-if="column.key === 'organization_name'">
|
|
<Avatar
|
|
v-if="item.label"
|
|
class="flex items-center"
|
|
:image="item.logo"
|
|
:label="item.label"
|
|
size="sm"
|
|
/>
|
|
</div>
|
|
<div v-else-if="column.key === 'lead_owner'">
|
|
<Avatar
|
|
v-if="item.full_name"
|
|
class="flex items-center"
|
|
:image="item.user_image"
|
|
:label="item.full_name"
|
|
size="sm"
|
|
/>
|
|
</div>
|
|
<div v-else-if="column.key === 'mobile_no'">
|
|
<PhoneIcon class="h-4 w-4" />
|
|
</div>
|
|
</template>
|
|
<div v-if="column.key === 'modified'" class="truncate text-base">
|
|
{{ item.timeAgo }}
|
|
</div>
|
|
</ListRowItem>
|
|
</ListRow>
|
|
</ListRows>
|
|
<ListSelectBanner />
|
|
</ListView>
|
|
</template>
|
|
|
|
<script setup>
|
|
import IndicatorIcon from '@/components/Icons/IndicatorIcon.vue'
|
|
import PhoneIcon from '@/components/Icons/PhoneIcon.vue'
|
|
import {
|
|
Avatar,
|
|
ListView,
|
|
ListHeader,
|
|
ListRows,
|
|
ListRow,
|
|
ListSelectBanner,
|
|
ListRowItem,
|
|
} from 'frappe-ui'
|
|
|
|
const props = defineProps({
|
|
rows: {
|
|
type: Array,
|
|
required: true,
|
|
},
|
|
columns: {
|
|
type: Array,
|
|
required: true,
|
|
},
|
|
})
|
|
</script>
|