计费列表增加状态搜索
This commit is contained in:
+2
@@ -31,6 +31,8 @@ public class BatchAddIncomeBillFeeRequest implements Serializable
|
|||||||
private List<String> productCodes;
|
private List<String> productCodes;
|
||||||
private String countryCode;
|
private String countryCode;
|
||||||
private String creditArrearsStatus;
|
private String creditArrearsStatus;
|
||||||
|
/** Same as list filter order_status IN (...). */
|
||||||
|
private List<Integer> orderStatuses;
|
||||||
/** Same as list filter billing_fail_status IN (...). */
|
/** Same as list filter billing_fail_status IN (...). */
|
||||||
private List<Integer> billingFailStatuses;
|
private List<Integer> billingFailStatuses;
|
||||||
|
|
||||||
|
|||||||
+2
@@ -21,6 +21,8 @@ public class ChargeWeightTemplateRequest implements Serializable
|
|||||||
private List<String> customerCodes;
|
private List<String> customerCodes;
|
||||||
private List<String> productCodes;
|
private List<String> productCodes;
|
||||||
private String creditArrearsStatus;
|
private String creditArrearsStatus;
|
||||||
|
/** Same as list filter order_status IN (...). */
|
||||||
|
private List<Integer> orderStatuses;
|
||||||
private String beginBizDate;
|
private String beginBizDate;
|
||||||
private String endBizDate;
|
private String endBizDate;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ public class RecalcBillPriceRequest implements Serializable
|
|||||||
private List<String> productCodes;
|
private List<String> productCodes;
|
||||||
private String countryCode;
|
private String countryCode;
|
||||||
private String creditArrearsStatus;
|
private String creditArrearsStatus;
|
||||||
|
/** Same as list filter order_status IN (...). */
|
||||||
|
private List<Integer> orderStatuses;
|
||||||
/** Same as list filter billing_fail_status IN (...). */
|
/** Same as list filter billing_fail_status IN (...). */
|
||||||
private List<Integer> billingFailStatuses;
|
private List<Integer> billingFailStatuses;
|
||||||
private String beginBizDate;
|
private String beginBizDate;
|
||||||
|
|||||||
+8
-3
@@ -675,7 +675,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
List<PrcOrderBill> bills = resolveListScopedBills(request.getScopeMode(), request.getBillIds(),
|
List<PrcOrderBill> bills = resolveListScopedBills(request.getScopeMode(), request.getBillIds(),
|
||||||
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(),
|
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(),
|
||||||
request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(),
|
request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(),
|
||||||
request.getCreditArrearsStatus(), request.getBillingFailStatuses(),
|
request.getCreditArrearsStatus(), request.getOrderStatuses(), request.getBillingFailStatuses(),
|
||||||
request.getBeginBizDate(), request.getEndBizDate(),
|
request.getBeginBizDate(), request.getEndBizDate(),
|
||||||
"price.bill.recalc.filterRequired", "price.bill.recalc.scopeRequired",
|
"price.bill.recalc.filterRequired", "price.bill.recalc.scopeRequired",
|
||||||
"price.bill.recalc.selectedRequired");
|
"price.bill.recalc.selectedRequired");
|
||||||
@@ -1251,7 +1251,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
return resolveListScopedBills(request.getScopeMode(), request.getBillIds(),
|
return resolveListScopedBills(request.getScopeMode(), request.getBillIds(),
|
||||||
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(),
|
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(),
|
||||||
request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(),
|
request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(),
|
||||||
request.getCreditArrearsStatus(), request.getBillingFailStatuses(),
|
request.getCreditArrearsStatus(), request.getOrderStatuses(), request.getBillingFailStatuses(),
|
||||||
request.getBeginBizDate(), request.getEndBizDate(),
|
request.getBeginBizDate(), request.getEndBizDate(),
|
||||||
"price.bill.fee.batch.filterRequired", "price.bill.fee.batch.scopeRequired",
|
"price.bill.fee.batch.filterRequired", "price.bill.fee.batch.scopeRequired",
|
||||||
"price.bill.fee.batch.selectedRequired");
|
"price.bill.fee.batch.selectedRequired");
|
||||||
@@ -1260,11 +1260,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
/**
|
/**
|
||||||
* Shared list-scope resolve for batch fee / recalc price.
|
* Shared list-scope resolve for batch fee / recalc price.
|
||||||
* scopeMode: SELECTED uses billIds; ALL uses filters (at least one required).
|
* scopeMode: SELECTED uses billIds; ALL uses filters (at least one required).
|
||||||
|
* orderStatuses alone does not count as a meaningful filter (same as export).
|
||||||
*/
|
*/
|
||||||
private List<PrcOrderBill> resolveListScopedBills(String scopeModeRaw, List<String> billIdsRaw,
|
private List<PrcOrderBill> resolveListScopedBills(String scopeModeRaw, List<String> billIdsRaw,
|
||||||
List<String> orderNosRaw, List<String> trackingNosRaw, List<String> transferNosRaw, List<String> orderIdentifiersRaw,
|
List<String> orderNosRaw, List<String> trackingNosRaw, List<String> transferNosRaw, List<String> orderIdentifiersRaw,
|
||||||
List<String> customerCodesRaw, List<String> productCodesRaw, String countryCodeRaw,
|
List<String> customerCodesRaw, List<String> productCodesRaw, String countryCodeRaw,
|
||||||
String creditArrearsStatusRaw, List<Integer> billingFailStatusesRaw,
|
String creditArrearsStatusRaw, List<Integer> orderStatusesRaw, List<Integer> billingFailStatusesRaw,
|
||||||
String beginBizDateRaw, String endBizDateRaw,
|
String beginBizDateRaw, String endBizDateRaw,
|
||||||
String msgFilter, String msgScope, String msgSelected)
|
String msgFilter, String msgScope, String msgSelected)
|
||||||
{
|
{
|
||||||
@@ -1279,6 +1280,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
List<String> orderIdentifiers = normalizeOrderIdentifiers(orderIdentifiersRaw);
|
List<String> orderIdentifiers = normalizeOrderIdentifiers(orderIdentifiersRaw);
|
||||||
List<String> customerCodes = normalizeCodeList(customerCodesRaw);
|
List<String> customerCodes = normalizeCodeList(customerCodesRaw);
|
||||||
List<String> productCodes = normalizeCodeList(productCodesRaw);
|
List<String> productCodes = normalizeCodeList(productCodesRaw);
|
||||||
|
List<Integer> orderStatuses = normalizeIntegerList(orderStatusesRaw);
|
||||||
List<Integer> billingFailStatuses = normalizeIntegerList(billingFailStatusesRaw);
|
List<Integer> billingFailStatuses = normalizeIntegerList(billingFailStatusesRaw);
|
||||||
String creditArrearsStatus = StringUtils.isEmpty(creditArrearsStatusRaw) ? null
|
String creditArrearsStatus = StringUtils.isEmpty(creditArrearsStatusRaw) ? null
|
||||||
: creditArrearsStatusRaw.trim();
|
: creditArrearsStatusRaw.trim();
|
||||||
@@ -1320,6 +1322,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
query.setCustomerCodes(customerCodes);
|
query.setCustomerCodes(customerCodes);
|
||||||
query.setProductCodes(productCodes);
|
query.setProductCodes(productCodes);
|
||||||
query.setCreditArrearsStatus(creditArrearsStatus);
|
query.setCreditArrearsStatus(creditArrearsStatus);
|
||||||
|
query.setOrderStatuses(orderStatuses);
|
||||||
query.setBillingFailStatuses(billingFailStatuses);
|
query.setBillingFailStatuses(billingFailStatuses);
|
||||||
query.setCountryCode(countryCode);
|
query.setCountryCode(countryCode);
|
||||||
if (beginBizDate != null)
|
if (beginBizDate != null)
|
||||||
@@ -2713,6 +2716,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
List<String> transferNos = normalizeCodeList(request.getTransferNos());
|
List<String> transferNos = normalizeCodeList(request.getTransferNos());
|
||||||
List<String> customerCodes = normalizeCodeList(request.getCustomerCodes());
|
List<String> customerCodes = normalizeCodeList(request.getCustomerCodes());
|
||||||
List<String> productCodes = normalizeCodeList(request.getProductCodes());
|
List<String> productCodes = normalizeCodeList(request.getProductCodes());
|
||||||
|
List<Integer> orderStatuses = normalizeIntegerList(request.getOrderStatuses());
|
||||||
String creditArrearsStatus = StringUtils.isEmpty(request.getCreditArrearsStatus()) ? null
|
String creditArrearsStatus = StringUtils.isEmpty(request.getCreditArrearsStatus()) ? null
|
||||||
: request.getCreditArrearsStatus().trim();
|
: request.getCreditArrearsStatus().trim();
|
||||||
String beginBizDate = StringUtils.isEmpty(request.getBeginBizDate()) ? null
|
String beginBizDate = StringUtils.isEmpty(request.getBeginBizDate()) ? null
|
||||||
@@ -2740,6 +2744,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
query.setCustomerCodes(customerCodes);
|
query.setCustomerCodes(customerCodes);
|
||||||
query.setProductCodes(productCodes);
|
query.setProductCodes(productCodes);
|
||||||
query.setCreditArrearsStatus(creditArrearsStatus);
|
query.setCreditArrearsStatus(creditArrearsStatus);
|
||||||
|
query.setOrderStatuses(orderStatuses);
|
||||||
if (beginBizDate != null)
|
if (beginBizDate != null)
|
||||||
{
|
{
|
||||||
query.getParams().put("beginBizDate", beginBizDate);
|
query.getParams().put("beginBizDate", beginBizDate);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:search-columns="searchColumns"
|
:search-columns="searchColumns"
|
||||||
|
:default-params="defaultParams"
|
||||||
:query="queryList"
|
:query="queryList"
|
||||||
:search-per-row="4"
|
:search-per-row="4"
|
||||||
row-key="billId"
|
row-key="billId"
|
||||||
@@ -54,6 +55,32 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</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 }">
|
<template #col-product="{ row }">
|
||||||
{{ row.productName || '-' }} ({{ row.productCode }})
|
{{ row.productName || '-' }} ({{ row.productCode }})
|
||||||
</template>
|
</template>
|
||||||
@@ -293,6 +320,56 @@ const exportFieldRef = ref()
|
|||||||
const tableHeight = ref(480)
|
const tableHeight = ref(480)
|
||||||
let tableResizeObserver = null
|
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() {
|
function updateTableHeight() {
|
||||||
const tableEl = document.querySelector('.billing-bill > .basic-table .el-table, .billing-bill > .basic-table .basic-table-virtual')
|
const tableEl = document.querySelector('.billing-bill > .basic-table .el-table, .billing-bill > .basic-table .basic-table-virtual')
|
||||||
if (!tableEl) return
|
if (!tableEl) return
|
||||||
@@ -393,7 +470,7 @@ const billingFailStatusOptions = [
|
|||||||
const searchColumns = [
|
const searchColumns = [
|
||||||
{ label: '单号', prop: 'orderIdentifiers', placeholder: '订单号/运单号/转单号' },
|
{ label: '单号', prop: 'orderIdentifiers', placeholder: '订单号/运单号/转单号' },
|
||||||
{ label: '客户', prop: 'customerCodes', placeholder: '客户名称/客户代码/对外代码' },
|
{ label: '客户', prop: 'customerCodes', placeholder: '客户名称/客户代码/对外代码' },
|
||||||
{ label: '产品代码', prop: 'productCodes', placeholder: '产品代码' },
|
// { label: '产品代码', prop: 'productCodes', placeholder: '产品代码' },
|
||||||
{
|
{
|
||||||
label: '额度欠费',
|
label: '额度欠费',
|
||||||
prop: 'creditArrearsStatus',
|
prop: 'creditArrearsStatus',
|
||||||
@@ -402,6 +479,19 @@ const searchColumns = [
|
|||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
props: { clearable: true }
|
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',
|
label: '\u8ba1\u8d39\u5931\u8d25',
|
||||||
prop: 'billingFailStatuses',
|
prop: 'billingFailStatuses',
|
||||||
@@ -587,6 +677,7 @@ function buildRecalcPayload() {
|
|||||||
customerCodes: rest.customerCodes || [],
|
customerCodes: rest.customerCodes || [],
|
||||||
productCodes: rest.productCodes || [],
|
productCodes: rest.productCodes || [],
|
||||||
creditArrearsStatus: rest.creditArrearsStatus || undefined,
|
creditArrearsStatus: rest.creditArrearsStatus || undefined,
|
||||||
|
orderStatuses: Array.isArray(rest.orderStatuses) ? rest.orderStatuses : [],
|
||||||
billingFailStatuses: Array.isArray(rest.billingFailStatuses) ? rest.billingFailStatuses : []
|
billingFailStatuses: Array.isArray(rest.billingFailStatuses) ? rest.billingFailStatuses : []
|
||||||
}
|
}
|
||||||
if (Array.isArray(bizDateRange) && (bizDateRange[0] || bizDateRange[1])) {
|
if (Array.isArray(bizDateRange) && (bizDateRange[0] || bizDateRange[1])) {
|
||||||
@@ -678,7 +769,8 @@ function buildChargeWeightTemplateQuery() {
|
|||||||
orderIdentifiers: parseOrderIdentifiers(rest.orderIdentifiers),
|
orderIdentifiers: parseOrderIdentifiers(rest.orderIdentifiers),
|
||||||
customerCodes: rest.customerCodes || [],
|
customerCodes: rest.customerCodes || [],
|
||||||
productCodes: rest.productCodes || [],
|
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])) {
|
if (Array.isArray(bizDateRange) && (bizDateRange[0] || bizDateRange[1])) {
|
||||||
payload.beginBizDate = bizDateRange[0] || null
|
payload.beginBizDate = bizDateRange[0] || null
|
||||||
|
|||||||
@@ -211,6 +211,11 @@ function buildQueryTags(q) {
|
|||||||
: (q.creditArrearsStatus === 'NORMAL' ? "正常" : q.creditArrearsStatus)
|
: (q.creditArrearsStatus === 'NORMAL' ? "正常" : q.creditArrearsStatus)
|
||||||
tags.push("额度欠费" + ':' + label)
|
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) : []
|
const failStatuses = Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses.filter(v => v != null) : []
|
||||||
if (failStatuses.length) {
|
if (failStatuses.length) {
|
||||||
const labels = failStatuses.map(v => billingFailStatusLabel(v))
|
const labels = failStatuses.map(v => billingFailStatusLabel(v))
|
||||||
@@ -222,6 +227,25 @@ function buildQueryTags(q) {
|
|||||||
return tags
|
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) {
|
function billingFailStatusLabel(code) {
|
||||||
const map = {
|
const map = {
|
||||||
0: '计费成功',
|
0: '计费成功',
|
||||||
@@ -278,6 +302,7 @@ function buildPayload() {
|
|||||||
customerCodes: q.customerCodes || [],
|
customerCodes: q.customerCodes || [],
|
||||||
productCodes: q.productCodes || [],
|
productCodes: q.productCodes || [],
|
||||||
creditArrearsStatus: q.creditArrearsStatus || undefined,
|
creditArrearsStatus: q.creditArrearsStatus || undefined,
|
||||||
|
orderStatuses: Array.isArray(q.orderStatuses) ? q.orderStatuses : [],
|
||||||
billingFailStatuses: Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses : [],
|
billingFailStatuses: Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses : [],
|
||||||
beginBizDate: q.beginBizDate || undefined,
|
beginBizDate: q.beginBizDate || undefined,
|
||||||
endBizDate: q.endBizDate || undefined
|
endBizDate: q.endBizDate || undefined
|
||||||
|
|||||||
Reference in New Issue
Block a user