计费列表增加状态搜索
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
ref="tableRef"
|
||||
:columns="columns"
|
||||
:search-columns="searchColumns"
|
||||
:default-params="defaultParams"
|
||||
:query="queryList"
|
||||
:search-per-row="4"
|
||||
row-key="billId"
|
||||
@@ -54,6 +55,32 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
<template #search-orderStatuses="{ model }">
|
||||
<el-select
|
||||
v-model="model.orderStatuses"
|
||||
multiple
|
||||
filterable
|
||||
clearable
|
||||
collapse-tags
|
||||
collapse-tags-tooltip
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
>
|
||||
<template #header>
|
||||
<el-checkbox
|
||||
:model-value="isAllSelected(model, 'orderStatuses', orderStatusAllValues)"
|
||||
:indeterminate="isIndeterminate(model, 'orderStatuses', orderStatusAllValues)"
|
||||
@change="(checked) => toggleAllSelected(model, 'orderStatuses', orderStatusAllValues, checked)"
|
||||
>全选</el-checkbox>
|
||||
</template>
|
||||
<el-option
|
||||
v-for="opt in orderStatusOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
<template #col-product="{ row }">
|
||||
{{ row.productName || '-' }} ({{ row.productCode }})
|
||||
</template>
|
||||
@@ -293,6 +320,56 @@ const exportFieldRef = ref()
|
||||
const tableHeight = ref(480)
|
||||
let tableResizeObserver = null
|
||||
|
||||
const defaultParams = {
|
||||
orderStatuses: [3, 4, 5, 6, 7, 8, 11],
|
||||
billingFailStatuses: []
|
||||
}
|
||||
|
||||
const orderStatusMap = {
|
||||
0: '草稿订单',
|
||||
1: '确认订单',
|
||||
2: '已中转',
|
||||
3: '已收货',
|
||||
4: '已装箱',
|
||||
5: '已出库',
|
||||
6: '转运中',
|
||||
7: '已上网',
|
||||
8: '已签收',
|
||||
9: '已退件',
|
||||
10: '已取消',
|
||||
11: '已复核'
|
||||
}
|
||||
const orderStatusOptions = Object.keys(orderStatusMap).map(k => ({ label: orderStatusMap[k], value: Number(k) }))
|
||||
const orderStatusAllValues = computed(() => orderStatusOptions.map(o => o.value))
|
||||
|
||||
function selectedValues(model, key) {
|
||||
const value = model?.[key]
|
||||
return Array.isArray(value) ? value : []
|
||||
}
|
||||
|
||||
function resolveAllValues(allValues) {
|
||||
if (Array.isArray(allValues)) return allValues
|
||||
const value = allValues?.value
|
||||
return Array.isArray(value) ? value : []
|
||||
}
|
||||
|
||||
function isAllSelected(model, key, allValues) {
|
||||
const all = resolveAllValues(allValues)
|
||||
const selected = selectedValues(model, key)
|
||||
return all.length > 0 && selected.length === all.length
|
||||
}
|
||||
|
||||
function isIndeterminate(model, key, allValues) {
|
||||
const all = resolveAllValues(allValues)
|
||||
const selected = selectedValues(model, key)
|
||||
return selected.length > 0 && selected.length < all.length
|
||||
}
|
||||
|
||||
function toggleAllSelected(model, key, allValues, checked) {
|
||||
if (!model) return
|
||||
model[key] = checked ? [...resolveAllValues(allValues)] : []
|
||||
}
|
||||
|
||||
function updateTableHeight() {
|
||||
const tableEl = document.querySelector('.billing-bill > .basic-table .el-table, .billing-bill > .basic-table .basic-table-virtual')
|
||||
if (!tableEl) return
|
||||
@@ -393,7 +470,7 @@ const billingFailStatusOptions = [
|
||||
const searchColumns = [
|
||||
{ label: '单号', prop: 'orderIdentifiers', placeholder: '订单号/运单号/转单号' },
|
||||
{ label: '客户', prop: 'customerCodes', placeholder: '客户名称/客户代码/对外代码' },
|
||||
{ label: '产品代码', prop: 'productCodes', placeholder: '产品代码' },
|
||||
// { label: '产品代码', prop: 'productCodes', placeholder: '产品代码' },
|
||||
{
|
||||
label: '额度欠费',
|
||||
prop: 'creditArrearsStatus',
|
||||
@@ -402,6 +479,19 @@ const searchColumns = [
|
||||
placeholder: '请选择',
|
||||
props: { clearable: true }
|
||||
},
|
||||
{
|
||||
label: '订单状态',
|
||||
prop: 'orderStatuses',
|
||||
component: 'select',
|
||||
options: orderStatusOptions,
|
||||
placeholder: '请选择',
|
||||
props: {
|
||||
multiple: true,
|
||||
clearable: true,
|
||||
collapseTags: true,
|
||||
collapseTagsTooltip: true
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '\u8ba1\u8d39\u5931\u8d25',
|
||||
prop: 'billingFailStatuses',
|
||||
@@ -587,6 +677,7 @@ function buildRecalcPayload() {
|
||||
customerCodes: rest.customerCodes || [],
|
||||
productCodes: rest.productCodes || [],
|
||||
creditArrearsStatus: rest.creditArrearsStatus || undefined,
|
||||
orderStatuses: Array.isArray(rest.orderStatuses) ? rest.orderStatuses : [],
|
||||
billingFailStatuses: Array.isArray(rest.billingFailStatuses) ? rest.billingFailStatuses : []
|
||||
}
|
||||
if (Array.isArray(bizDateRange) && (bizDateRange[0] || bizDateRange[1])) {
|
||||
@@ -678,7 +769,8 @@ function buildChargeWeightTemplateQuery() {
|
||||
orderIdentifiers: parseOrderIdentifiers(rest.orderIdentifiers),
|
||||
customerCodes: rest.customerCodes || [],
|
||||
productCodes: rest.productCodes || [],
|
||||
creditArrearsStatus: rest.creditArrearsStatus || undefined
|
||||
creditArrearsStatus: rest.creditArrearsStatus || undefined,
|
||||
orderStatuses: Array.isArray(rest.orderStatuses) ? rest.orderStatuses : []
|
||||
}
|
||||
if (Array.isArray(bizDateRange) && (bizDateRange[0] || bizDateRange[1])) {
|
||||
payload.beginBizDate = bizDateRange[0] || null
|
||||
|
||||
@@ -211,6 +211,11 @@ function buildQueryTags(q) {
|
||||
: (q.creditArrearsStatus === 'NORMAL' ? "正常" : q.creditArrearsStatus)
|
||||
tags.push("额度欠费" + ':' + label)
|
||||
}
|
||||
const orderStatuses = Array.isArray(q.orderStatuses) ? q.orderStatuses.filter(v => v != null) : []
|
||||
if (orderStatuses.length) {
|
||||
const labels = orderStatuses.map(v => orderStatusLabel(v))
|
||||
tags.push("订单状态" + ':' + labels.join(', '))
|
||||
}
|
||||
const failStatuses = Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses.filter(v => v != null) : []
|
||||
if (failStatuses.length) {
|
||||
const labels = failStatuses.map(v => billingFailStatusLabel(v))
|
||||
@@ -222,6 +227,25 @@ function buildQueryTags(q) {
|
||||
return tags
|
||||
}
|
||||
|
||||
function orderStatusLabel(code) {
|
||||
const map = {
|
||||
0: '草稿订单',
|
||||
1: '确认订单',
|
||||
2: '已中转',
|
||||
3: '已收货',
|
||||
4: '已装箱',
|
||||
5: '已出库',
|
||||
6: '转运中',
|
||||
7: '已上网',
|
||||
8: '已签收',
|
||||
9: '已退件',
|
||||
10: '已取消',
|
||||
11: '已复核'
|
||||
}
|
||||
const key = Number(code)
|
||||
return map[key] != null ? map[key] : String(code)
|
||||
}
|
||||
|
||||
function billingFailStatusLabel(code) {
|
||||
const map = {
|
||||
0: '计费成功',
|
||||
@@ -278,6 +302,7 @@ function buildPayload() {
|
||||
customerCodes: q.customerCodes || [],
|
||||
productCodes: q.productCodes || [],
|
||||
creditArrearsStatus: q.creditArrearsStatus || undefined,
|
||||
orderStatuses: Array.isArray(q.orderStatuses) ? q.orderStatuses : [],
|
||||
billingFailStatuses: Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses : [],
|
||||
beginBizDate: q.beginBizDate || undefined,
|
||||
endBizDate: q.endBizDate || undefined
|
||||
|
||||
Reference in New Issue
Block a user