refactor: statusOptions code
(cherry picked from commit 5e616f1a50d1a6b6e4d6190f554edd704cb9b25f)
This commit is contained in:
parent
a4716e7899
commit
89da8d2e8d
@ -23,15 +23,7 @@
|
|||||||
/>
|
/>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="
|
:options="statusOptions('deal', document, deal.data._customStatuses)"
|
||||||
statusOptions(
|
|
||||||
'deal',
|
|
||||||
updateStatus,
|
|
||||||
document.statuses?.length
|
|
||||||
? document.statuses
|
|
||||||
: deal.data._customStatuses,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -741,9 +733,4 @@ function reloadAssignees(data) {
|
|||||||
assignees.reload()
|
assignees.reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStatus(value) {
|
|
||||||
document.doc.status = value
|
|
||||||
document.save.submit()
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -23,15 +23,7 @@
|
|||||||
/>
|
/>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="
|
:options="statusOptions('lead', document, lead.data._customStatuses)"
|
||||||
statusOptions(
|
|
||||||
'lead',
|
|
||||||
updateStatus,
|
|
||||||
document.statuses?.length
|
|
||||||
? document.statuses
|
|
||||||
: lead.data._customStatuses,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -731,9 +723,4 @@ function reloadAssignees(data) {
|
|||||||
assignees.reload()
|
assignees.reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStatus(value) {
|
|
||||||
document.doc.status = value
|
|
||||||
document.save.submit()
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -11,15 +11,7 @@
|
|||||||
<div class="absolute right-0">
|
<div class="absolute right-0">
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="
|
:options="statusOptions('deal', document, deal.data._customStatuses)"
|
||||||
statusOptions(
|
|
||||||
'deal',
|
|
||||||
updateStatus,
|
|
||||||
document.statuses?.length
|
|
||||||
? document.statuses
|
|
||||||
: deal.data._customStatuses,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -627,9 +619,4 @@ function reloadAssignees(data) {
|
|||||||
assignees.reload()
|
assignees.reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStatus(value) {
|
|
||||||
document.doc.status = value
|
|
||||||
document.save.submit()
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -11,15 +11,7 @@
|
|||||||
<div class="absolute right-0">
|
<div class="absolute right-0">
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="
|
:options="statusOptions('lead', document, lead.data._customStatuses)"
|
||||||
statusOptions(
|
|
||||||
'lead',
|
|
||||||
updateStatus,
|
|
||||||
document.statuses?.length
|
|
||||||
? document.statuses
|
|
||||||
: lead.data._customStatuses,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -476,9 +468,4 @@ function reloadAssignees(data) {
|
|||||||
assignees.reload()
|
assignees.reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStatus(value) {
|
|
||||||
document.doc.status = value
|
|
||||||
document.save.submit()
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -77,10 +77,14 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
return communicationStatuses[name]
|
return communicationStatuses[name]
|
||||||
}
|
}
|
||||||
|
|
||||||
function statusOptions(doctype, action, statuses = []) {
|
function statusOptions(doctype, document, statuses = []) {
|
||||||
let statusesByName =
|
let statusesByName =
|
||||||
doctype == 'deal' ? dealStatusesByName : leadStatusesByName
|
doctype == 'deal' ? dealStatusesByName : leadStatusesByName
|
||||||
|
|
||||||
|
if (document?.statuses?.length) {
|
||||||
|
statuses = document.statuses
|
||||||
|
}
|
||||||
|
|
||||||
if (statuses.length) {
|
if (statuses.length) {
|
||||||
statusesByName = statuses.reduce((acc, status) => {
|
statusesByName = statuses.reduce((acc, status) => {
|
||||||
acc[status] = statusesByName[status]
|
acc[status] = statusesByName[status]
|
||||||
@ -96,7 +100,10 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
icon: () => h(IndicatorIcon, { class: statusesByName[status]?.color }),
|
icon: () => h(IndicatorIcon, { class: statusesByName[status]?.color }),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
capture('status_changed', { doctype, status })
|
capture('status_changed', { doctype, status })
|
||||||
action && action(statusesByName[status]?.name)
|
if (document) {
|
||||||
|
document.doc.status = statusesByName[status]?.name
|
||||||
|
document.save.submit()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user