fix: added intemediate step for change deal status & convert to deal step

This commit is contained in:
Shariq Ansari 2025-03-24 13:11:29 +05:30
parent c13ec48824
commit 02994ca00d
4 changed files with 43 additions and 15 deletions

Binary file not shown.

Binary file not shown.

View File

@ -192,7 +192,6 @@ declare module 'vue' {
SidePanelLayout: typeof import('./src/components/SidePanelLayout.vue')['default'] SidePanelLayout: typeof import('./src/components/SidePanelLayout.vue')['default']
SidePanelLayoutEditor: typeof import('./src/components/SidePanelLayoutEditor.vue')['default'] SidePanelLayoutEditor: typeof import('./src/components/SidePanelLayoutEditor.vue')['default']
SidePanelModal: typeof import('./src/components/Modals/SidePanelModal.vue')['default'] SidePanelModal: typeof import('./src/components/Modals/SidePanelModal.vue')['default']
SignupBanner: typeof import('./src/components/SignupBanner.vue')['default']
SLASection: typeof import('./src/components/SLASection.vue')['default'] SLASection: typeof import('./src/components/SLASection.vue')['default']
SmileIcon: typeof import('./src/components/Icons/SmileIcon.vue')['default'] SmileIcon: typeof import('./src/components/Icons/SmileIcon.vue')['default']
SortBy: typeof import('./src/components/SortBy.vue')['default'] SortBy: typeof import('./src/components/SortBy.vue')['default']

View File

@ -132,6 +132,10 @@
:afterResetAll="() => capture('onboarding_steps_reset')" :afterResetAll="() => capture('onboarding_steps_reset')"
docsLink="https://docs.frappe.io/crm" docsLink="https://docs.frappe.io/crm"
/> />
<IntermediateStepModal
v-model="showIntermediateModal"
:currentStep="currentStep"
/>
</div> </div>
</template> </template>
@ -174,6 +178,7 @@ import {
useOnboarding, useOnboarding,
showHelpModal, showHelpModal,
minimize, minimize,
IntermediateStepModal,
} from 'frappe-ui/frappe' } from 'frappe-ui/frappe'
import { capture } from '@/telemetry' import { capture } from '@/telemetry'
import router from '@/router' import router from '@/router'
@ -308,6 +313,9 @@ async function getFirstDeal() {
return await call('crm.api.onboarding.get_first_deal') return await call('crm.api.onboarding.get_first_deal')
} }
const showIntermediateModal = ref(false)
const currentStep = ref({})
const steps = reactive([ const steps = reactive([
{ {
name: 'create_first_lead', name: 'create_first_lead',
@ -338,13 +346,23 @@ const steps = reactive([
onClick: async () => { onClick: async () => {
minimize.value = true minimize.value = true
let lead = await getFirstLead() currentStep.value = {
title: __('Convert lead to deal'),
buttonLabel: __('Convert'),
videoURL: '/assets/crm/videos/convert_to_deal.mov',
onClick: async () => {
showIntermediateModal.value = false
currentStep.value = {}
if (lead) { let lead = await getFirstLead()
router.push({ name: 'Lead', params: { leadId: lead } }) if (lead) {
} else { router.push({ name: 'Lead', params: { leadId: lead } })
router.push({ name: 'Leads' }) } else {
router.push({ name: 'Leads' })
}
},
} }
showIntermediateModal.value = true
}, },
}, },
{ {
@ -434,17 +452,28 @@ const steps = reactive([
completed: false, completed: false,
onClick: async () => { onClick: async () => {
minimize.value = true minimize.value = true
let deal = await getFirstDeal()
if (deal) { currentStep.value = {
router.push({ title: __('Change deal status'),
name: 'Deal', buttonLabel: __('Change'),
params: { dealId: deal }, videoURL: '/assets/crm/videos/change_deal_status.mov',
hash: '#activity', onClick: async () => {
}) showIntermediateModal.value = false
} else { currentStep.value = {}
router.push({ name: 'Leads' })
let deal = await getFirstDeal()
if (deal) {
router.push({
name: 'Deal',
params: { dealId: deal },
hash: '#activity',
})
} else {
router.push({ name: 'Leads' })
}
},
} }
showIntermediateModal.value = true
}, },
}, },
]) ])