1
0
forked from test/crm
Shariq Ansari 788c565e71 refactor: use doc in activity & child components
(cherry picked from commit af830b8782f2c9dbeca8ba1bce29565ab03388bc)
2025-07-30 12:44:42 +00:00

125 lines
2.4 KiB
Vue

<template>
<TaskModal
v-model="showTaskModal"
v-model:reloadTasks="activities"
:task="task"
:doctype="doctype"
:doc="doc?.name"
@after="redirect('tasks')"
/>
<NoteModal
v-model="showNoteModal"
v-model:reloadNotes="activities"
:note="note"
:doctype="doctype"
:doc="doc?.name"
@after="redirect('notes')"
/>
<CallLogModal
v-if="showCallLogModal"
v-model="showCallLogModal"
:data="callLog"
:referenceDoc="referenceDoc"
:options="{ afterInsert: () => activities.reload() }"
/>
</template>
<script setup>
import TaskModal from '@/components/Modals/TaskModal.vue'
import NoteModal from '@/components/Modals/NoteModal.vue'
import CallLogModal from '@/components/Modals/CallLogModal.vue'
import { call } from 'frappe-ui'
import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
const props = defineProps({
doctype: String,
})
const activities = defineModel()
const doc = defineModel('doc')
// Tasks
const showTaskModal = ref(false)
const task = ref({})
function showTask(t) {
task.value = t || {
title: '',
description: '',
assigned_to: '',
due_date: '',
priority: 'Low',
status: 'Backlog',
}
showTaskModal.value = true
}
async function deleteTask(name) {
await call('frappe.client.delete', {
doctype: 'CRM Task',
name,
})
activities.value.reload()
}
function updateTaskStatus(status, task) {
call('frappe.client.set_value', {
doctype: 'CRM Task',
name: task.name,
fieldname: 'status',
value: status,
}).then(() => {
activities.value.reload()
})
}
// Notes
const showNoteModal = ref(false)
const note = ref({})
function showNote(n) {
note.value = n || {
title: '',
content: '',
}
showNoteModal.value = true
}
// Call Logs
const showCallLogModal = ref(false)
const callLog = ref({})
const referenceDoc = ref({})
function createCallLog() {
let doctype = props.doctype
let docname = props.doc?.name
referenceDoc.value = { ...props.doc }
callLog.value = {
reference_doctype: doctype,
reference_docname: docname,
}
showCallLogModal.value = true
}
// common
const route = useRoute()
const router = useRouter()
function redirect(tabName) {
if (route.name == 'Lead' || route.name == 'Deal') {
let hash = '#' + tabName
if (route.hash != hash) {
router.push({ ...route, hash })
}
}
}
defineExpose({
showTask,
deleteTask,
updateTaskStatus,
showNote,
createCallLog,
})
</script>