1
0
forked from test/crm

fix: edit and rename organization doc

This commit is contained in:
Shariq Ansari 2023-11-03 23:22:12 +05:30
parent 6e13cbf866
commit 8bea5747fe

View File

@ -40,6 +40,7 @@
<script setup> <script setup>
import { TextInput, Dialog, call } from 'frappe-ui' import { TextInput, Dialog, call } from 'frappe-ui'
import { ref, defineModel, nextTick, watch } from 'vue' import { ref, defineModel, nextTick, watch } from 'vue'
import { useRouter } from 'vue-router'
const props = defineProps({ const props = defineProps({
organization: { organization: {
@ -54,37 +55,77 @@ const organizations = defineModel('reloadOrganizations')
const title = ref(null) const title = ref(null)
const editMode = ref(false) const editMode = ref(false)
let _organization = ref({}) let _organization = ref({})
const router = useRouter()
async function updateOrganization(close) { async function updateOrganization(close) {
if ( const old = { ...props.organization }
props.organization.organization_name === _organization.value.name && const newOrg = { ..._organization.value }
props.organization.website === _organization.value.website
) const nameChanged = old.name !== newOrg.name
delete old.name
delete newOrg.name
const otherFieldChanged = JSON.stringify(old) !== JSON.stringify(newOrg)
const values = newOrg
if (!nameChanged && !otherFieldChanged) {
close()
return return
}
if (editMode.value) { if (editMode.value) {
let d = await call('frappe.client.set_value', { let name
if (nameChanged) {
name = await callRenameDoc()
}
if (otherFieldChanged) {
name = await callSetValue(values)
}
handleOrganizationUpdate(name)
} else {
await callInsertDoc()
}
close()
}
async function callRenameDoc() {
const d = await call('frappe.client.rename_doc', {
doctype: 'CRM Organization',
old_name: props.organization.name,
new_name: _organization.value.name,
})
return d
}
async function callSetValue(values) {
const d = await call('frappe.client.set_value', {
doctype: 'CRM Organization', doctype: 'CRM Organization',
name: _organization.value.name, name: _organization.value.name,
fieldname: _organization.value, fieldname: values,
}) })
if (d.name) { return d.name
organizations.value.reload()
} }
} else {
let d = await call('frappe.client.insert', { async function callInsertDoc() {
const d = await call('frappe.client.insert', {
doc: { doc: {
doctype: 'CRM Organization', doctype: 'CRM Organization',
organization_name: _organization.value.name, organization_name: _organization.value.name,
website: _organization.value.website, website: _organization.value.website,
}, },
}) })
if (d.name) { d.name && handleOrganizationUpdate()
}
function handleOrganizationUpdate(name) {
organizations.value.reload() organizations.value.reload()
if (name) {
router.push({
name: 'Organization',
params: { organizationId: name },
})
} }
} }
close()
}
watch( watch(
() => show.value, () => show.value,