fix: edit and rename organization doc
This commit is contained in:
parent
6e13cbf866
commit
8bea5747fe
@ -40,6 +40,7 @@
|
||||
<script setup>
|
||||
import { TextInput, Dialog, call } from 'frappe-ui'
|
||||
import { ref, defineModel, nextTick, watch } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const props = defineProps({
|
||||
organization: {
|
||||
@ -54,38 +55,78 @@ const organizations = defineModel('reloadOrganizations')
|
||||
const title = ref(null)
|
||||
const editMode = ref(false)
|
||||
let _organization = ref({})
|
||||
const router = useRouter()
|
||||
|
||||
async function updateOrganization(close) {
|
||||
if (
|
||||
props.organization.organization_name === _organization.value.name &&
|
||||
props.organization.website === _organization.value.website
|
||||
)
|
||||
const old = { ...props.organization }
|
||||
const newOrg = { ..._organization.value }
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
if (editMode.value) {
|
||||
let d = await call('frappe.client.set_value', {
|
||||
doctype: 'CRM Organization',
|
||||
name: _organization.value.name,
|
||||
fieldname: _organization.value,
|
||||
})
|
||||
if (d.name) {
|
||||
organizations.value.reload()
|
||||
let name
|
||||
if (nameChanged) {
|
||||
name = await callRenameDoc()
|
||||
}
|
||||
if (otherFieldChanged) {
|
||||
name = await callSetValue(values)
|
||||
}
|
||||
handleOrganizationUpdate(name)
|
||||
} else {
|
||||
let d = await call('frappe.client.insert', {
|
||||
doc: {
|
||||
doctype: 'CRM Organization',
|
||||
organization_name: _organization.value.name,
|
||||
website: _organization.value.website,
|
||||
},
|
||||
})
|
||||
if (d.name) {
|
||||
organizations.value.reload()
|
||||
}
|
||||
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',
|
||||
name: _organization.value.name,
|
||||
fieldname: values,
|
||||
})
|
||||
return d.name
|
||||
}
|
||||
|
||||
async function callInsertDoc() {
|
||||
const d = await call('frappe.client.insert', {
|
||||
doc: {
|
||||
doctype: 'CRM Organization',
|
||||
organization_name: _organization.value.name,
|
||||
website: _organization.value.website,
|
||||
},
|
||||
})
|
||||
d.name && handleOrganizationUpdate()
|
||||
}
|
||||
|
||||
function handleOrganizationUpdate(name) {
|
||||
organizations.value.reload()
|
||||
if (name) {
|
||||
router.push({
|
||||
name: 'Organization',
|
||||
params: { organizationId: name },
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
() => show.value,
|
||||
(value) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user