diff --git a/src/api/lb-daily-user-trade.js b/src/api/lb-daily-user-trade.js
index 51c1d0b..9bbe6fd 100644
--- a/src/api/lb-daily-user-trade.js
+++ b/src/api/lb-daily-user-trade.js
@@ -1,5 +1,7 @@
import request from '@/utils/request'
+const LONG_REQUEST_TIMEOUT = 5 * 60 * 1000
+
export function getLbDailyUserTradeList(params) {
return request({
url: '/lbDailyUserTrade/list',
@@ -59,9 +61,22 @@ export function importLbDailyUserTrade(file, defaultReportDate, tenantId) {
return request({
url: '/lbDailyUserTrade/import',
method: 'post',
+ timeout: LONG_REQUEST_TIMEOUT,
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
+
+export function calculateReportByDateAndTenant(reportDate, tenantId) {
+ return request({
+ url: '/lbDailyUserTrade/calculate-report/by-date-and-tenant',
+ method: 'post',
+ timeout: LONG_REQUEST_TIMEOUT,
+ params: {
+ reportDate,
+ tenantId
+ }
+ })
+}
diff --git a/src/views/lb-business/daily-report/index.vue b/src/views/lb-business/daily-report/index.vue
index 8136469..0343b15 100644
--- a/src/views/lb-business/daily-report/index.vue
+++ b/src/views/lb-business/daily-report/index.vue
@@ -2,9 +2,6 @@
-
-
-
@@ -12,7 +9,10 @@
-
+
+
+
+
-
-
-
-
-
-
查询
清空
@@ -67,21 +47,19 @@
-
-
+
+
+ {{ formatDate(scope.row.reportDate) }}
+
+
-
+
-
-
- {{ formatDateTime(scope.row.reportDate) }}
-
-
@@ -204,6 +182,23 @@ import {
updateLbDailyUserTradeReport
} from '@/api/lb-daily-user-trade-report'
+function formatDateTimeForQuery(date) {
+ const year = date.getFullYear()
+ const month = String(date.getMonth() + 1).padStart(2, '0')
+ const day = String(date.getDate()).padStart(2, '0')
+ return `${year}-${month}-${day} 00:00:00`
+}
+
+function getDefaultReportRange() {
+ const today = new Date()
+ const yesterday = new Date(today)
+ yesterday.setDate(yesterday.getDate() - 1)
+ return {
+ reportStartTime: formatDateTimeForQuery(yesterday),
+ reportEndTime: formatDateTimeForQuery(today)
+ }
+}
+
export default {
name: 'LbDailyReport',
data() {
@@ -218,14 +213,10 @@ export default {
queryParams: {
current: 1,
size: 10,
- tenantId: '',
userId: '',
dataType: '',
nickname: '',
- reportStartTime: '',
- reportEndTime: '',
- createdStartTime: '',
- createdEndTime: ''
+ ...getDefaultReportRange()
},
form: {
id: '',
@@ -276,14 +267,11 @@ export default {
const params = {
current: this.queryParams.current,
size: this.queryParams.size,
- tenantId: this.queryParams.tenantId || undefined,
userId: this.queryParams.userId || undefined,
dataType: this.queryParams.dataType || undefined,
nickname: this.queryParams.nickname || undefined,
reportStartTime: this.queryParams.reportStartTime || undefined,
- reportEndTime: this.queryParams.reportEndTime || undefined,
- createdStartTime: this.queryParams.createdStartTime || undefined,
- createdEndTime: this.queryParams.createdEndTime || undefined
+ reportEndTime: this.queryParams.reportEndTime || undefined
}
Object.keys(params).forEach((key) => {
if (params[key] === undefined || params[key] === '') delete params[key]
@@ -298,14 +286,10 @@ export default {
this.queryParams = {
current: 1,
size: 10,
- tenantId: '',
userId: '',
dataType: '',
nickname: '',
- reportStartTime: '',
- reportEndTime: '',
- createdStartTime: '',
- createdEndTime: ''
+ ...getDefaultReportRange()
}
this.fetchList()
},
@@ -441,6 +425,15 @@ export default {
const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
+ },
+ formatDate(dateTime) {
+ if (!dateTime) return '-'
+ const date = new Date(String(dateTime).replace('T', ' '))
+ if (Number.isNaN(date.getTime())) return String(dateTime)
+ const year = date.getFullYear()
+ const month = String(date.getMonth() + 1).padStart(2, '0')
+ const day = String(date.getDate()).padStart(2, '0')
+ return `${year}-${month}-${day}`
}
}
}
diff --git a/src/views/lb-business/daily-trade/index.vue b/src/views/lb-business/daily-trade/index.vue
index 0c85a94..d08f897 100644
--- a/src/views/lb-business/daily-trade/index.vue
+++ b/src/views/lb-business/daily-trade/index.vue
@@ -31,6 +31,7 @@
新增
导入数据
+ 准备报表数据
按日期删除
@@ -192,6 +193,23 @@
确定删除
+
+
+
+
+
+
+
+
@@ -206,6 +224,7 @@ function getLocalTodayDateString() {
import {
addLbDailyUserTrade,
+ calculateReportByDateAndTenant,
deleteLbDailyUserTradeByDateAndTenant,
deleteLbDailyUserTrade,
getLbDailyUserTradeList,
@@ -222,11 +241,13 @@ export default {
submitLoading: false,
importLoading: false,
deleteByDateLoading: false,
+ prepareReportLoading: false,
list: [],
total: 0,
dialogVisible: false,
importDialogVisible: false,
deleteByDateDialogVisible: false,
+ prepareReportDialogVisible: false,
dialogTitle: '',
isEdit: false,
importFileList: [],
@@ -269,6 +290,12 @@ export default {
},
deleteByDateRules: {
reportDate: [{ required: true, message: '请选择导入日期', trigger: 'change' }]
+ },
+ prepareReportForm: {
+ reportDate: getLocalTodayDateString()
+ },
+ prepareReportRules: {
+ reportDate: [{ required: true, message: '请选择报表日期', trigger: 'change' }]
}
}
},
@@ -393,6 +420,13 @@ export default {
if (this.$refs.deleteByDateFormRef) this.$refs.deleteByDateFormRef.clearValidate()
})
},
+ openPrepareReportDialog() {
+ this.prepareReportForm.reportDate = getLocalTodayDateString()
+ this.prepareReportDialogVisible = true
+ this.$nextTick(() => {
+ if (this.$refs.prepareReportFormRef) this.$refs.prepareReportFormRef.clearValidate()
+ })
+ },
handleImportFileChange(file, fileList) {
this.importFileList = fileList.slice(-1)
this.importForm.file = this.importFileList.length > 0 ? this.importFileList[0].raw : null
@@ -468,6 +502,31 @@ export default {
reportDate: ''
}
},
+ submitPrepareReport() {
+ this.$refs.prepareReportFormRef.validate((valid) => {
+ if (!valid) return
+ const tenantId = this.getTenantIdFromBusinessHeaders()
+ if (!tenantId) {
+ this.$message.error('未获取到租户ID,请先登录或切换到正确租户后重试')
+ return
+ }
+ this.prepareReportLoading = true
+ calculateReportByDateAndTenant(this.prepareReportForm.reportDate, tenantId)
+ .then((res) => {
+ this.$message.success(res.message || '报表数据准备成功')
+ this.prepareReportDialogVisible = false
+ })
+ .finally(() => {
+ this.prepareReportLoading = false
+ })
+ })
+ },
+ resetPrepareReportForm() {
+ if (this.$refs.prepareReportFormRef) this.$refs.prepareReportFormRef.resetFields()
+ this.prepareReportForm = {
+ reportDate: getLocalTodayDateString()
+ }
+ },
getTenantIdFromBusinessHeaders() {
const headers = getBusinessHeaders()
const value = headers && headers['X-Tenant-Id']