增加搜索条件

This commit is contained in:
zhonghua.li
2026-05-17 11:27:19 +08:00
parent 4c61fc8828
commit 2a3ec11534
4 changed files with 283 additions and 9 deletions

View File

@@ -39,3 +39,12 @@ export function syncLbOrderRowFromThird(data) {
data
})
}
/** 按购买时间区间、租户 id 按日汇总生成 sum_data */
export function generateLbOrderRowDailySum(data) {
return request({
url: '/lbOrderRow/generate-daily-sum',
method: 'post',
data
})
}

View File

@@ -79,6 +79,20 @@ export function exportLbPurchaseApply(params) {
})
}
/** 导出同事特权开通提醒 Excel */
export function exportColleagueVip(params) {
return request({
url: '/lbPurchaseApply/exportColleagueVip',
method: 'get',
params: {
applyDateStart: params.applyDateStart,
applyDateEnd: params.applyDateEnd,
tenantId: params.tenantId
},
responseType: 'blob'
})
}
/** 按申请日期区间与租户同步同事 hxrd 用户 VIP可能较慢依赖外部管理端 */
export function syncHxrAdminColleagueVip(params) {
return request({

View File

@@ -11,6 +11,12 @@
<el-form-item label="卖家ID">
<el-input v-model="queryParams.sellerId" clearable placeholder="卖家 id" style="width: 140px" />
</el-form-item>
<el-form-item label="昵称">
<el-input v-model="queryParams.consignee" clearable placeholder="昵称" style="width: 140px" />
</el-form-item>
<el-form-item label="电话">
<el-input v-model="queryParams.phone" clearable placeholder="电话" style="width: 140px" />
</el-form-item>
<el-form-item label="状态">
<el-input v-model="queryParams.status" clearable placeholder="状态" style="width: 100px" />
</el-form-item>
@@ -20,6 +26,12 @@
<el-option label="寄卖" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="数据类型">
<el-select v-model="queryParams.dataType" clearable placeholder="请选择数据类型" style="width: 140px">
<el-option label="明细" value="detail_data" />
<el-option label="汇总" value="sum_data" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">查询</el-button>
<el-button icon="el-icon-delete" @click="resetQuery">清空</el-button>
@@ -30,22 +42,30 @@
<el-card class="action-container" shadow="never">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
<el-button type="default" icon="el-icon-refresh" style="margin-left: 10px" @click="openSyncDialog">同步订单</el-button>
<el-button type="default" icon="el-icon-s-data" style="margin-left: 10px" @click="openDailySumDialog">汇总天数据</el-button>
</el-card>
<el-card class="table-container" shadow="never">
<el-table v-loading="loading" :data="list" style="width: 100%">
<el-table-column label="订单ID" prop="id" min-width="120" show-overflow-tooltip />
<el-table-column label="订单号" prop="orderSn" min-width="140" show-overflow-tooltip />
<el-table-column label="租户ID" prop="tenantId" min-width="100" show-overflow-tooltip />
<el-table-column label="买家ID" prop="buyerId" min-width="100" show-overflow-tooltip />
<el-table-column label="卖家ID" prop="sellerId" min-width="100" show-overflow-tooltip />
<el-table-column label="商品ID" prop="merchandiseId" min-width="100" show-overflow-tooltip />
<el-table-column label="状态" prop="status" width="72" />
<el-table-column label="总金额" prop="totalMoney" min-width="100" show-overflow-tooltip />
<el-table-column label="收货人" prop="consignee" min-width="90" show-overflow-tooltip />
<el-table-column label="电话" prop="phone" min-width="110" show-overflow-tooltip />
<el-table-column label="总金额" prop="totalMoney" min-width="100" show-overflow-tooltip />
<el-table-column label="当天未寄卖单数" prop="todayUnresellCount" min-width="130" align="center" />
<el-table-column label="当天交易单数" prop="todayOrderCount" min-width="120" align="center" />
<el-table-column label="是否寄卖" min-width="100" align="center">
<template slot-scope="scope">
{{ formatIsResellLabel(scope.row) }}
</template>
</el-table-column>
<el-table-column label="状态" min-width="88" align="center">
<template slot-scope="scope">
{{ formatStatusLabel(scope.row) }}
</template>
</el-table-column>
<el-table-column label="下单时间" prop="buyTime" min-width="150" show-overflow-tooltip />
<el-table-column label="支付时间" prop="payTime" min-width="150" show-overflow-tooltip />
<el-table-column label="操作" fixed="right" width="140">
<template slot-scope="scope">
<el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
@@ -214,6 +234,33 @@
</div>
</el-dialog>
<el-dialog title="汇总天数据" :visible.sync="dailySumDialogVisible" width="520px" @close="resetDailySumForm">
<el-form ref="dailySumFormRef" :model="dailySumForm" :rules="dailySumFormRules" label-width="110px">
<el-form-item label="购买时间" prop="buyTimeRange">
<el-date-picker
v-model="dailySumForm.buyTimeRange"
type="datetimerange"
range-separator=""
start-placeholder="开始时间"
end-placeholder="结束时间"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss"
:default-time="['00:00:00', '23:59:59']"
style="width: 100%"
clearable
@change="handleDailySumBuyTimeRangeChange"
/>
</el-form-item>
<el-form-item label="租户ID" prop="tenantId">
<el-input v-model="dailySumForm.tenantId" clearable placeholder="请输入租户ID" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dailySumDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="dailySumSubmitLoading" @click="handleDailySumSubmit">确定</el-button>
</div>
</el-dialog>
<el-dialog title="同步订单" :visible.sync="syncDialogVisible" width="520px" @close="resetSyncForm">
<el-form ref="syncFormRef" :model="syncForm" :rules="syncFormRules" label-width="110px">
<el-form-item label="购买时间" prop="buyTimeRange">
@@ -253,6 +300,7 @@
import {
addLbOrderRow,
deleteLbOrderRow,
generateLbOrderRowDailySum,
getLbOrderRowList,
syncLbOrderRowFromThird,
updateLbOrderRow
@@ -321,6 +369,20 @@ export default {
return {
loading: false,
submitLoading: false,
dailySumDialogVisible: false,
dailySumSubmitLoading: false,
dailySumForm: {
buyTimeRange: null,
tenantId: ''
},
dailySumFormRules: {
buyTimeRange: [
{ required: true, message: '请选择购买时间区间', trigger: 'change' }
],
tenantId: [
{ required: true, message: '请填写租户ID', trigger: 'blur' }
]
},
syncDialogVisible: false,
syncSubmitLoading: false,
syncForm: {
@@ -343,8 +405,11 @@ export default {
orderSn: '',
buyerId: '',
sellerId: '',
consignee: '',
phone: '',
status: '',
isResell: undefined
isResell: undefined,
dataType: ''
},
form: emptyForm(),
formRules: {
@@ -366,6 +431,17 @@ export default {
const value = headers && headers['X-Tenant-Id']
return value ? String(value).trim() : ''
},
formatIsResellLabel(row) {
const value = row.isResell !== undefined && row.isResell !== null
? row.isResell
: row.is_resell
return Number(value) === 1 ? '已寄卖' : '未寄卖'
},
formatStatusLabel(row) {
const value = row.status
if (Number(value) === 2) return '已完成'
return value !== undefined && value !== null ? value : ''
},
fetchList() {
this.loading = true
getLbOrderRowList(this.buildListParams())
@@ -395,10 +471,13 @@ export default {
orderSn: this.queryParams.orderSn || undefined,
buyerId: parseOptionalLong(this.queryParams.buyerId),
sellerId: parseOptionalLong(this.queryParams.sellerId),
consignee: this.queryParams.consignee || undefined,
phone: this.queryParams.phone || undefined,
status: parseOptionalInt(this.queryParams.status),
isResell: this.queryParams.isResell === 0 || this.queryParams.isResell === 1
? this.queryParams.isResell
: undefined
: undefined,
dataType: this.queryParams.dataType || undefined
}
Object.keys(params).forEach((key) => {
if (params[key] === undefined || params[key] === '') delete params[key]
@@ -416,8 +495,11 @@ export default {
orderSn: '',
buyerId: '',
sellerId: '',
consignee: '',
phone: '',
status: '',
isResell: undefined
isResell: undefined,
dataType: ''
}
this.fetchList()
},
@@ -615,6 +697,64 @@ export default {
this.syncSubmitLoading = false
})
})
},
handleDailySumBuyTimeRangeChange(range) {
const normalized = this.normalizeSyncBuyTimeRange(range)
if (normalized !== range) {
this.dailySumForm.buyTimeRange = normalized
}
},
openDailySumDialog() {
this.dailySumForm = {
buyTimeRange: null,
tenantId: this.getTenantIdFromBusinessHeaders()
}
this.dailySumDialogVisible = true
this.$nextTick(() => {
this.$refs.dailySumFormRef && this.$refs.dailySumFormRef.clearValidate()
})
},
resetDailySumForm() {
this.dailySumForm = {
buyTimeRange: null,
tenantId: ''
}
this.$refs.dailySumFormRef && this.$refs.dailySumFormRef.resetFields()
},
handleDailySumSubmit() {
this.$refs.dailySumFormRef.validate((valid) => {
if (!valid) return
const range = this.normalizeSyncBuyTimeRange(this.dailySumForm.buyTimeRange)
if (!Array.isArray(range) || range.length !== 2 || !range[0] || !range[1]) {
this.$message.warning('请选择完整的购买时间区间')
return
}
const tenantId = String(this.dailySumForm.tenantId || '').trim()
if (!tenantId) {
this.$message.error('请填写租户ID')
return
}
const payload = {
buyTimeStart: range[0],
buyTimeEnd: range[1],
tenantId
}
this.dailySumSubmitLoading = true
generateLbOrderRowDailySum(payload)
.then((res) => {
const ok = res && (res.code === 20000 || res.code === 200 || res.success === true)
if (ok) {
this.$message.success((res && res.message) || '汇总成功')
this.dailySumDialogVisible = false
} else {
this.$message.error((res && res.message) || '汇总失败')
}
})
.catch(() => {})
.finally(() => {
this.dailySumSubmitLoading = false
})
})
}
}
}

View File

@@ -59,6 +59,14 @@
>
导出新人特权
</el-button>
<el-button
type="success"
icon="el-icon-download"
style="margin-left: 12px"
@click="openExportColleaguePrivilegeDialog"
>
导出同事特权
</el-button>
</el-card>
<el-card class="table-container" shadow="never">
@@ -314,6 +322,45 @@
</div>
</el-dialog>
<el-dialog
title="导出同事特权"
:visible.sync="exportColleaguePrivilegeDialogVisible"
width="520px"
@close="resetExportColleaguePrivilegeDialog"
>
<el-form label-width="120px">
<el-form-item label="申请开始日期" required>
<el-date-picker
v-model="exportColleaguePrivilegeApplyDateStart"
type="date"
value-format="yyyy-MM-dd"
clearable
placeholder="请选择开始日期"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="申请结束日期" required>
<el-date-picker
v-model="exportColleaguePrivilegeApplyDateEnd"
type="date"
value-format="yyyy-MM-dd"
clearable
placeholder="请选择结束日期"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="租户ID" required>
<el-input v-model="exportColleaguePrivilegeTenantId" clearable placeholder="请输入租户ID" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="exportColleaguePrivilegeDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="exportColleaguePrivilegeLoading" @click="submitExportColleaguePrivilege">
确定
</el-button>
</div>
</el-dialog>
<el-dialog title="特权推荐人列表" :visible.sync="privilegeDialogVisible" width="760px" @close="resetPrivilegeDialog">
<el-table v-loading="privilegeLoading" :data="privilegeList" style="width: 100%">
<el-table-column type="index" label="#" width="60" />
@@ -336,6 +383,7 @@
import {
addLbPurchaseApply,
deleteLbPurchaseApply,
exportColleagueVip,
exportLbPurchaseApply,
getLbPurchaseApplyList,
needPrivilegeRecommenders,
@@ -381,6 +429,11 @@ export default {
exportNewcomerPrivilegeRules: {
applyDateRange: [{ required: true, message: '请选择申请日期范围', trigger: 'change' }]
},
exportColleaguePrivilegeDialogVisible: false,
exportColleaguePrivilegeLoading: false,
exportColleaguePrivilegeApplyDateStart: today,
exportColleaguePrivilegeApplyDateEnd: today,
exportColleaguePrivilegeTenantId: '',
privilegeDateRange: [today, today],
privilegeList: [],
queryParams: {
@@ -629,6 +682,64 @@ export default {
this.exportNewcomerPrivilegeTenantIdDisplay = ''
this.exportNewcomerPrivilegeLoading = false
},
openExportColleaguePrivilegeDialog() {
const today = this.getCurrentDate()
const tenantId = this.getTenantIdFromBusinessHeaders()
if (
Array.isArray(this.privilegeDateRange) &&
this.privilegeDateRange.length === 2 &&
this.privilegeDateRange[0] &&
this.privilegeDateRange[1]
) {
this.exportColleaguePrivilegeApplyDateStart = this.privilegeDateRange[0]
this.exportColleaguePrivilegeApplyDateEnd = this.privilegeDateRange[1]
} else {
this.exportColleaguePrivilegeApplyDateStart = today
this.exportColleaguePrivilegeApplyDateEnd = today
}
this.exportColleaguePrivilegeTenantId = tenantId
this.exportColleaguePrivilegeDialogVisible = true
},
resetExportColleaguePrivilegeDialog() {
const today = this.getCurrentDate()
this.exportColleaguePrivilegeApplyDateStart = today
this.exportColleaguePrivilegeApplyDateEnd = today
this.exportColleaguePrivilegeTenantId = ''
this.exportColleaguePrivilegeLoading = false
},
submitExportColleaguePrivilege() {
const applyDateStart = this.exportColleaguePrivilegeApplyDateStart
const applyDateEnd = this.exportColleaguePrivilegeApplyDateEnd
const tenantId = (this.exportColleaguePrivilegeTenantId || '').trim()
if (!applyDateStart || !applyDateEnd) {
this.$message.warning('请选择申请开始日期与结束日期')
return
}
if (!tenantId) {
this.$message.warning('请输入租户ID')
return
}
this.exportColleaguePrivilegeLoading = true
exportColleagueVip({ applyDateStart, applyDateEnd, tenantId })
.then((blob) => {
const safeBlob = blob instanceof Blob ? blob : new Blob([blob], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
const url = window.URL.createObjectURL(safeBlob)
const link = document.createElement('a')
link.href = url
link.download = `colleagueVip_${applyDateStart}_${applyDateEnd}_${tenantId}.xlsx`
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
this.$message.success('导出成功')
this.exportColleaguePrivilegeDialogVisible = false
})
.finally(() => {
this.exportColleaguePrivilegeLoading = false
})
},
handleViewPrivilege() {
if (!Array.isArray(this.privilegeDateRange) || this.privilegeDateRange.length !== 2) {
this.$message.warning('请选择开始日期和结束日期')