+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+ 查询用户:{{ parentTradeQueryUserLabel || '-' }};区间:{{ parentTradeQueryRangeLabel || '-' }}
+
+
+
+
+ {{ formatDate(scope.row.reportDate) }}
+
+
+
+
+
+ {{ formatDeptAmt(scope.row.yestodayBuyAmt) }}
+
+
+ {{ formatDeptAmt(scope.row.dailySellAmt) }}
+
+
+ {{ formatDeptAmt(scope.row.dailyBuyAmt) }}
+
+
+ {{ formatDeptAmt(scope.row.serviceAmt) }}
+
+
+ {{ formatDeptAmt(scope.row.diffAmt) }}
+
+
+ {{ formatDeptAmt(scope.row.dikouAmt) }}
+
+
+
+
+ {{ formatDateTime(scope.row.createdAt) }}
+
+
+
+
+
+
@@ -337,6 +513,8 @@ import {
deleteLbDailyUserTradeReport,
exportLbDailyUserTradeReportByDateAndTenant,
getLbDailyUserTradeReportList,
+ listDailyUserTradeByParentIdOfUserAndDateRange,
+ listDailyUserTradeByUserIdAndDateRange,
listYestodayBuyPositiveAndDailySellZero,
statsUserTradeWithTeamByDateRangeAndTenant,
updateLbDailyUserTradeReport
@@ -443,6 +621,8 @@ export default {
exportLoading: false,
checkUnsoldLoading: false,
deptStatsLoading: false,
+ parentTradeLoading: false,
+ myTradeLoading: false,
activeTab: 'list',
deptStatsForm: {
startDate: '',
@@ -450,6 +630,32 @@ export default {
},
deptStatsTreeData: [],
deptStatsSummaryText: '',
+ parentTradeDialogVisible: false,
+ myTradeDialogVisible: false,
+ parentTradeList: [],
+ myTradeList: [],
+ parentTradeTotal: 0,
+ myTradeTotal: 0,
+ parentTradeQueryUserLabel: '',
+ myTradeQueryUserLabel: '',
+ parentTradeQueryRangeLabel: '',
+ myTradeQueryRangeLabel: '',
+ parentTradeQuery: {
+ userId: '',
+ startDate: '',
+ endDate: '',
+ current: 1,
+ size: 10
+ },
+ myTradeQuery: {
+ userId: '',
+ startDate: '',
+ endDate: '',
+ current: 1,
+ size: 10
+ },
+ parentTradeLoadingByUserId: {},
+ myTradeLoadingByUserId: {},
list: [],
total: 0,
dialogVisible: false,
@@ -467,7 +673,6 @@ export default {
},
form: {
id: '',
- tenantId: '',
userId: '',
nickname: '',
yestodayBuyAmt: '',
@@ -481,7 +686,6 @@ export default {
descContent: ''
},
formRules: {
- tenantId: [{ required: true, message: '请输入租户ID', trigger: 'blur' }],
userId: [{ required: true, message: '请输入用户ID', trigger: 'blur' }]
},
deleteByDateForm: {
@@ -656,7 +860,6 @@ export default {
this.isEdit = true
this.form = {
id: row.id,
- tenantId: row.tenantId || '',
userId: row.userId || '',
nickname: row.nickname || '',
yestodayBuyAmt: this.toInputString(row.yestodayBuyAmt),
@@ -753,7 +956,7 @@ export default {
this.deptStatsTreeData = buildDeptTradeStatsTree(rows, deptList)
const rangeLabel = `${startDate} ~ ${endDate}`
this.deptStatsSummaryText =
- `统计区间:${rangeLabel};租户:${tenantId};共 ${total} 人(树按部门上下级展示,同级按合计差额降序)`
+ `统计区间:${rangeLabel};共 ${total} 人(树按部门上下级展示,同级按合计差额降序)`
if (!rows.length) {
this.$message.success((statsRes && statsRes.message) || '暂无数据')
}
@@ -765,6 +968,184 @@ export default {
this.deptStatsLoading = false
})
},
+ handleQueryParentTrade(row) {
+ const userId = row && row.userId ? String(row.userId).trim() : ''
+ const startDate = this.deptStatsForm.startDate
+ const endDate = this.deptStatsForm.endDate
+ if (!userId) {
+ this.$message.warning('当前行缺少用户ID,无法查询父交易')
+ return
+ }
+ if (!startDate || !endDate) {
+ this.$message.warning('请先选择统计开始日期和结束日期')
+ return
+ }
+ this.$set(this.parentTradeLoadingByUserId, userId, true)
+ this.parentTradeQuery = {
+ userId,
+ startDate,
+ endDate,
+ current: 1,
+ size: 10
+ }
+ this.parentTradeQueryUserLabel = `${row.name || '-'} (${userId})`
+ this.parentTradeQueryRangeLabel = `${startDate} ~ ${endDate}`
+ this.parentTradeDialogVisible = true
+ this.fetchParentTradeList()
+ .finally(() => {
+ this.$set(this.parentTradeLoadingByUserId, userId, false)
+ })
+ },
+ handleQueryMyTrade(row) {
+ const userId = row && row.userId ? String(row.userId).trim() : ''
+ const startDate = this.deptStatsForm.startDate
+ const endDate = this.deptStatsForm.endDate
+ if (!userId) {
+ this.$message.warning('当前行缺少用户ID,无法查询我的交易')
+ return
+ }
+ if (!startDate || !endDate) {
+ this.$message.warning('请先选择统计开始日期和结束日期')
+ return
+ }
+ this.$set(this.myTradeLoadingByUserId, userId, true)
+ this.myTradeQuery = {
+ userId,
+ startDate,
+ endDate,
+ current: 1,
+ size: 10
+ }
+ this.myTradeQueryUserLabel = `${row.name || '-'} (${userId})`
+ this.myTradeQueryRangeLabel = `${startDate} ~ ${endDate}`
+ this.myTradeDialogVisible = true
+ this.fetchMyTradeList()
+ .finally(() => {
+ this.$set(this.myTradeLoadingByUserId, userId, false)
+ })
+ },
+ handleParentTradeSearch() {
+ const { startDate, endDate } = this.parentTradeQuery
+ if (!startDate || !endDate) {
+ this.$message.warning('请选择开始日期和结束日期')
+ return
+ }
+ this.parentTradeQuery.current = 1
+ this.parentTradeQueryRangeLabel = `${startDate} ~ ${endDate}`
+ this.fetchParentTradeList()
+ },
+ handleMyTradeSearch() {
+ const { startDate, endDate } = this.myTradeQuery
+ if (!startDate || !endDate) {
+ this.$message.warning('请选择开始日期和结束日期')
+ return
+ }
+ this.myTradeQuery.current = 1
+ this.myTradeQueryRangeLabel = `${startDate} ~ ${endDate}`
+ this.fetchMyTradeList()
+ },
+ fetchParentTradeList() {
+ const { userId, startDate, endDate, current, size } = this.parentTradeQuery
+ this.parentTradeLoading = true
+ return listDailyUserTradeByParentIdOfUserAndDateRange({
+ userId,
+ startDate,
+ endDate,
+ current,
+ size
+ })
+ .then((res) => {
+ const ok = res && (res.success === true || res.code === 200 || res.code === 20000)
+ if (!ok) {
+ this.parentTradeList = []
+ this.parentTradeTotal = 0
+ this.$message.error((res && res.message) || '查询父交易失败')
+ return
+ }
+ this.parentTradeList = Array.isArray(res.data) ? res.data : []
+ this.parentTradeTotal = typeof res.total === 'number' ? res.total : this.parentTradeList.length
+ })
+ .catch(() => {
+ this.parentTradeList = []
+ this.parentTradeTotal = 0
+ })
+ .finally(() => {
+ this.parentTradeLoading = false
+ })
+ },
+ fetchMyTradeList() {
+ const { userId, startDate, endDate, current, size } = this.myTradeQuery
+ this.myTradeLoading = true
+ return listDailyUserTradeByUserIdAndDateRange({
+ userId,
+ startDate,
+ endDate,
+ current,
+ size
+ })
+ .then((res) => {
+ const ok = res && (res.success === true || res.code === 200 || res.code === 20000)
+ if (!ok) {
+ this.myTradeList = []
+ this.myTradeTotal = 0
+ this.$message.error((res && res.message) || '查询我的交易失败')
+ return
+ }
+ this.myTradeList = Array.isArray(res.data) ? res.data : []
+ this.myTradeTotal = typeof res.total === 'number' ? res.total : this.myTradeList.length
+ })
+ .catch(() => {
+ this.myTradeList = []
+ this.myTradeTotal = 0
+ })
+ .finally(() => {
+ this.myTradeLoading = false
+ })
+ },
+ handleParentTradeSizeChange(size) {
+ this.parentTradeQuery.size = size
+ this.parentTradeQuery.current = 1
+ this.fetchParentTradeList()
+ },
+ handleParentTradeCurrentChange(current) {
+ this.parentTradeQuery.current = current
+ this.fetchParentTradeList()
+ },
+ handleMyTradeSizeChange(size) {
+ this.myTradeQuery.size = size
+ this.myTradeQuery.current = 1
+ this.fetchMyTradeList()
+ },
+ handleMyTradeCurrentChange(current) {
+ this.myTradeQuery.current = current
+ this.fetchMyTradeList()
+ },
+ resetParentTradeDialog() {
+ this.parentTradeList = []
+ this.parentTradeTotal = 0
+ this.parentTradeQueryUserLabel = ''
+ this.parentTradeQueryRangeLabel = ''
+ this.parentTradeQuery = {
+ userId: '',
+ startDate: '',
+ endDate: '',
+ current: 1,
+ size: 10
+ }
+ },
+ resetMyTradeDialog() {
+ this.myTradeList = []
+ this.myTradeTotal = 0
+ this.myTradeQueryUserLabel = ''
+ this.myTradeQueryRangeLabel = ''
+ this.myTradeQuery = {
+ userId: '',
+ startDate: '',
+ endDate: '',
+ current: 1,
+ size: 10
+ }
+ },
formatDeptAmt(val) {
if (val === null || val === undefined || val === '') return '-'
const n = Number(val)
@@ -884,8 +1265,9 @@ export default {
})
},
buildPayload() {
+ const tenantId = this.getTenantIdFromBusinessHeaders()
const payload = {
- tenantId: this.form.tenantId,
+ tenantId: tenantId || undefined,
userId: this.form.userId,
nickname: this.form.nickname || undefined,
yestodayBuyAmt: this.parseDecimal(this.form.yestodayBuyAmt),
@@ -929,7 +1311,6 @@ export default {
resetFormData() {
this.form = {
id: '',
- tenantId: '',
userId: '',
nickname: '',
yestodayBuyAmt: '',
@@ -1060,6 +1441,12 @@ export default {
text-overflow: ellipsis;
}
+ .dept-stats-parent-trade-btn {
+ flex: 0 0 auto;
+ margin-left: 2px;
+ padding: 0;
+ }
+
.dept-stats-tree-table ::v-deep td:first-child .cell {
white-space: nowrap;
}
@@ -1180,5 +1567,20 @@ export default {
font-weight: 400;
}
}
+
+ .parent-trade-dialog-tip {
+ margin-bottom: 12px;
+ color: #606266;
+ font-size: 13px;
+ }
+
+ .parent-trade-filter {
+ margin-bottom: 8px;
+ }
+
+ .parent-trade-pagination {
+ margin-top: 16px;
+ text-align: right;
+ }
}
diff --git a/src/views/lb-business/daily-trade/index.vue b/src/views/lb-business/daily-trade/index.vue
index d08f897..adb9cc5 100644
--- a/src/views/lb-business/daily-trade/index.vue
+++ b/src/views/lb-business/daily-trade/index.vue
@@ -38,7 +38,6 @@