1
0
forked from test/crm

fix: export logic

(cherry picked from commit a227389e3e761e9b3fa4a981bf5779d5892699ec)
This commit is contained in:
Pratik 2025-04-08 15:07:27 +05:30 committed by Mergify
parent a89619080a
commit a0fdf7013d
15 changed files with 103 additions and 2 deletions

View File

@ -10,6 +10,7 @@
}"
row-key="name"
v-bind="$attrs"
ref="listViewRef"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -205,6 +206,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const pageLengthCount = defineModel()
@ -229,7 +231,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(
() => listBulkActionsRef.value?.customListActions,

View File

@ -14,6 +14,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
ref="listViewRef"
>
<ListHeader
class="mx-3 sm:mx-5"
@ -201,6 +202,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()
@ -227,6 +229,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(

View File

@ -14,6 +14,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
ref="listViewRef"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -245,6 +246,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()
@ -271,6 +273,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(

View File

@ -9,6 +9,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
ref="listViewRef"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -191,6 +192,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const pageLengthCount = defineModel()
@ -215,6 +217,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(

View File

@ -14,6 +14,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
ref="listViewRef"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -250,7 +251,6 @@ const props = defineProps({
}),
},
})
const emit = defineEmits([
'loadMore',
'updatePageCount',
@ -258,6 +258,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()
@ -284,6 +285,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(

View File

@ -13,6 +13,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
ref="listViewRef"
>
<ListHeader
class="sm:mx-5 mx-3"
@ -186,6 +187,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const route = useRoute()
@ -212,6 +214,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(

View File

@ -9,6 +9,7 @@
resizeColumn: options.resizeColumn,
}"
row-key="name"
ref="listViewRef"
>
<ListHeader
class="mx-3 sm:mx-5"
@ -207,6 +208,7 @@ const emit = defineEmits([
'applyFilter',
'applyLikeFilter',
'likeDoc',
'selectionsChanged',
])
const pageLengthCount = defineModel()
@ -231,6 +233,14 @@ watch(pageLengthCount, (val, old_value) => {
})
const listBulkActionsRef = ref(null)
const listViewRef = ref(null)
watch(
() => Array.from(listViewRef.value?.selections || []),
(selections) => {
emit('selectionsChanged', selections)
},
)
defineExpose({
customListActions: computed(

View File

@ -545,6 +545,11 @@ function reload() {
const showExportDialog = ref(false)
const export_type = ref('Excel')
const export_all = ref(false)
const selectedRows = ref([])
function handleSelectionsChange(selections) {
selectedRows.value = selections
}
async function exportRows() {
let fields = JSON.stringify(list.value.data.columns.map((f) => f.key))
@ -560,7 +565,15 @@ async function exportRows() {
page_length = list.value.data.total_count
}
window.location.href = `/api/method/frappe.desk.reportview.export_query?file_format_type=${export_type.value}&title=${props.doctype}&doctype=${props.doctype}&fields=${fields}&filters=${filters}&order_by=${order_by}&page_length=${page_length}&start=0&view=Report&with_comment_count=1`
let url = `/api/method/frappe.desk.reportview.export_query?file_format_type=${export_type.value}&title=${props.doctype}&doctype=${props.doctype}&fields=${fields}&filters=${filters}&order_by=${order_by}&page_length=${page_length}&start=0&view=Report&with_comment_count=1`
// Add selected items parameter if rows are selected
if (selectedRows.value?.length && !export_all.value) {
url += `&selected_items=${JSON.stringify(selectedRows.value)}`
}
window.location.href = url
showExportDialog.value = false
export_all.value = false
export_type.value = 'Excel'
@ -1336,6 +1349,7 @@ defineExpose({
viewActions,
viewsDropdownOptions,
currentView,
handleSelectionsChange,
})
// Watchers

View File

@ -41,6 +41,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.handleSelectionsChange(selections)
"
/>
<div
v-else-if="callLogs.data"

View File

@ -44,6 +44,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.handleSelectionsChange(selections)
"
/>
<div
v-else-if="contacts.data"

View File

@ -223,6 +223,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.handleSelectionsChange(selections)
"
/>
<div v-else-if="deals.data" class="flex h-full items-center justify-center">
<div

View File

@ -45,6 +45,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.handleSelectionsChange(selections)
"
/>
<div
v-else-if="emailTemplates.data"

View File

@ -249,6 +249,7 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="(selections) => viewControls.handleSelectionsChange(selections)"
/>
<div v-else-if="leads.data" class="flex h-full items-center justify-center">
<div

View File

@ -44,6 +44,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.handleSelectionsChange(selections)
"
/>
<div
v-else-if="organizations.data"

View File

@ -172,6 +172,9 @@
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
@likeDoc="(data) => viewControls.likeDoc(data)"
@selectionsChanged="
(selections) => viewControls.handleSelectionsChange(selections)
"
/>
<div v-else-if="tasks.data" class="flex h-full items-center justify-center">
<div