Merge branch 'add_status' into 'master'

add status dropdown and due tab

See merge request mohit.panjvani/crater-web!1312
This commit is contained in:
Mohit Panjwani
2021-12-02 10:32:07 +00:00
2 changed files with 75 additions and 11 deletions

View File

@ -27,10 +27,11 @@
</label> </label>
<div <div
class=" class="flex flex-col space-y-3"
flex flex-col :class="
space-y-3 rowOnXl
lg:flex-row lg:space-x-4 lg:space-y-0 lg:items-center ? 'xl:flex-row xl:space-x-4 xl:space-y-0 xl:items-center'
: 'lg:flex-row lg:space-x-4 lg:space-y-0 lg:items-center'
" "
> >
<slot /> <slot />
@ -45,6 +46,10 @@ defineProps({
type: Boolean, type: Boolean,
default: false, default: false,
}, },
rowOnXl: {
type: Boolean,
default: false,
},
}) })
defineEmits(['clear']) defineEmits(['clear'])

View File

@ -38,7 +38,11 @@
</template> </template>
</BasePageHeader> </BasePageHeader>
<BaseFilterWrapper v-show="showFilters" @clear="clearFilter"> <BaseFilterWrapper
v-show="showFilters"
:row-on-xl="true"
@clear="clearFilter"
>
<BaseInputGroup :label="$tc('customers.customer', 1)"> <BaseInputGroup :label="$tc('customers.customer', 1)">
<BaseCustomerSelectInput <BaseCustomerSelectInput
v-model="filters.customer_id" v-model="filters.customer_id"
@ -48,6 +52,18 @@
/> />
</BaseInputGroup> </BaseInputGroup>
<BaseInputGroup :label="$t('invoices.status')">
<BaseMultiselect
v-model="filters.status"
:groups="true"
:options="status"
searchable
:placeholder="$t('general.select_a_status')"
@update:modelValue="setActiveTab"
@remove="clearStatusSearch()"
/>
</BaseInputGroup>
<BaseInputGroup :label="$t('general.from')"> <BaseInputGroup :label="$t('general.from')">
<BaseDatePicker <BaseDatePicker
v-model="filters.from_date" v-model="filters.from_date"
@ -116,6 +132,7 @@
<!-- Tabs --> <!-- Tabs -->
<BaseTabGroup class="-mb-5" @change="setStatusFilter"> <BaseTabGroup class="-mb-5" @change="setStatusFilter">
<BaseTab :title="$t('general.draft')" filter="DRAFT" /> <BaseTab :title="$t('general.draft')" filter="DRAFT" />
<BaseTab :title="$t('general.due')" filter="DUE" />
<BaseTab :title="$t('general.sent')" filter="SENT" /> <BaseTab :title="$t('general.sent')" filter="SENT" />
<BaseTab :title="$t('general.all')" filter="" /> <BaseTab :title="$t('general.all')" filter="" />
</BaseTabGroup> </BaseTabGroup>
@ -265,12 +282,15 @@ const table = ref(null)
const showFilters = ref(false) const showFilters = ref(false)
const status = ref([ const status = ref([
'DRAFT', {
'SENT', label: 'Status',
'VIEWED', options: ['DRAFT', 'DUE', 'SENT', 'VIEWED', 'OVERDUE', 'COMPLETED'],
'EXPIRED', },
'ACCEPTED', {
'REJECTED', label: 'Paid Status',
options: ['UNPAID', 'PAID', 'PARTIALLY_PAID'],
},
,
]) ])
const isRequestOngoing = ref(true) const isRequestOngoing = ref(true)
const activeTab = ref('general.draft') const activeTab = ref('general.draft')
@ -357,6 +377,11 @@ function hasAtleastOneAbility() {
]) ])
} }
async function clearStatusSearch(removedOption, id) {
filters.status = ''
refreshTable()
}
function refreshTable() { function refreshTable() {
table.value && table.value.refresh() table.value && table.value.refresh()
} }
@ -404,6 +429,11 @@ function setStatusFilter(val) {
case t('general.sent'): case t('general.sent'):
filters.status = 'SENT' filters.status = 'SENT'
break break
case t('general.due'):
filters.status = 'DUE'
break
default: default:
filters.status = '' filters.status = ''
break break
@ -472,6 +502,35 @@ function setActiveTab(val) {
case 'SENT': case 'SENT':
activeTab.value = t('general.sent') activeTab.value = t('general.sent')
break break
case 'DUE':
activeTab.value = t('general.due')
break
case 'COMPLETED':
activeTab.value = t('invoices.completed')
break
case 'PAID':
activeTab.value = t('invoices.paid')
break
case 'UNPAID':
activeTab.value = t('invoices.unpaid')
break
case 'PARTIALLY_PAID':
activeTab.value = t('invoices.partially_paid')
break
case 'VIEWED':
activeTab.value = t('invoices.viewed')
break
case 'OVERDUE':
activeTab.value = t('invoices.overdue')
break
default: default:
activeTab.value = t('general.all') activeTab.value = t('general.all')
break break