This commit is contained in:
gyq 2025-11-05 09:20:43 +08:00
parent 421fad369c
commit c2b84eae75
7 changed files with 97 additions and 33 deletions

View File

@ -1,8 +1,8 @@
<!-- 下拉选择用户可远程搜索 --> <!-- 下拉选择用户可远程搜索 -->
<template> <template>
<el-select :model-value="modelValue" placeholder="用户昵称/用户ID/用户手机" filterable remote reserve-keyword <el-select :model-value="modelValue" :placeholder="placeholder" filterable remote reserve-keyword
:remote-method="remoteMethod" :loading="loading" @change="$emit('update:modelValue', $event)"> :remote-method="remoteMethod" :loading="loading" @change="$emit('update:modelValue', $event)">
<el-option v-for="item in options" :key="item.id" :label="item.nickName" :value="item.id" /> <el-option v-for="item in options" :key="item.id" :label="`${item.nickName} / ${item.phone}`" :value="item.id" />
</el-select> </el-select>
</template> </template>
@ -21,6 +21,13 @@ const userId = defineModel('modelValue', {
required: false required: false
}) })
const props = defineProps({
placeholder: {
type: String,
default: '用户昵称/用户ID/用户手机'
}
})
// //
const remoteMethod = _.debounce(async function (query) { const remoteMethod = _.debounce(async function (query) {
try { try {

View File

@ -67,6 +67,7 @@
</template> </template>
<script setup> <script setup>
import dayjs from 'dayjs';
import { ref, reactive, onMounted } from 'vue' import { ref, reactive, onMounted } from 'vue'
import { distributionOpenFlow } from '@/api/coupon' import { distributionOpenFlow } from '@/api/coupon'
import selectUser from '../../components/selectUser.vue'; import selectUser from '../../components/selectUser.vue';
@ -89,7 +90,7 @@ function searchHandle() {
function resetHandle() { function resetHandle() {
queryForm.value.key = '' queryForm.value.key = ''
queryForm.value.startTime = '' queryForm.value.startTime = ''
queryForm.value.startTime = '' queryForm.value.endTime = ''
times.value = [] times.value = []
searchHandle() searchHandle()
} }
@ -105,8 +106,13 @@ const tableData = reactive({
// //
const times = ref([]) const times = ref([])
function selectTimeChange(e) { function selectTimeChange(e) {
queryForm.value.startTime = dayjs(e[0]).format('YYYY-MM-DD 00:00:00') if (e !== null) {
queryForm.value.endTime = dayjs(e[1]).format('YYYY-MM-DD 23:59:59') queryForm.value.startTime = dayjs(e[0]).format('YYYY-MM-DD 00:00:00')
queryForm.value.endTime = dayjs(e[1]).format('YYYY-MM-DD 23:59:59')
} else {
queryForm.value.startTime = ''
queryForm.value.endTime = ''
}
} }
// //
@ -131,6 +137,9 @@ async function getTableData() {
}) })
tableData.list = res.records tableData.list = res.records
tableData.total = res.totalRow tableData.total = res.totalRow
totalCount.value = res.totalCount
totalAmount.value = res.totalAmount
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }

View File

@ -42,7 +42,7 @@
</el-table-column> </el-table-column>
<el-table-column label="分销员" prop="distributionShops"> <el-table-column label="分销员" prop="distributionShops">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.distributionShops.length > 0" style="color: red;"></span> <span v-if="isDistribtion(scope.row.distributionShops) == 1" style="color: red;"></span>
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
@ -54,7 +54,7 @@
<el-table-column label="注册时间" prop="createTime" width="200"></el-table-column> <el-table-column label="注册时间" prop="createTime" width="200"></el-table-column>
<el-table-column label="操作" width="100" fixed="right"> <el-table-column label="操作" width="100" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button type="primary" :disabled="!!scope.row.distributionShops.length" <el-button type="primary" :disabled="isDistribtion(scope.row.distributionShops) == 1"
@click="selectHandle(scope.row)">选择</el-button> @click="selectHandle(scope.row)">选择</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -121,6 +121,12 @@ function submitHandle() {
} }
//
function isDistribtion(str) {
let s = str.split('_')
return s[1]
}
const selectUser = ref([]) const selectUser = ref([])
function tabSelect(e) { function tabSelect(e) {
selectUser.value = e selectUser.value = e

View File

@ -48,12 +48,19 @@
<el-form-item> <el-form-item>
<selectUser v-model="querForm.userId" /> <selectUser v-model="querForm.userId" />
</el-form-item> </el-form-item>
<el-form-item v-if="tabIndex == 1"> <el-form-item v-if="tabIndex == 0">
<el-select v-model="querForm.distributionLevelId" placeholder="请选择等级" style="width: 200px;"> <el-select v-model="querForm.distributionLevelId" placeholder="请选择等级" style="width: 200px;">
<el-option v-for="item in distributionLevelIdList" :key="item.id" :label="item.name" <el-option v-for="item in distributionLevelIdList" :key="item.id" :label="item.name"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="tabIndex == 1">
<el-select v-model="querForm.status" placeholder="请选择状态" style="width: 200px;">
<el-option label="已入账" value="success"></el-option>
<el-option label="待入账" value="pending"></el-option>
<el-option label="已退款" value="refund"></el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="searchHandle" :loading="tableData.loading" icon="Search">搜索</el-button> <el-button type="primary" @click="searchHandle" :loading="tableData.loading" icon="Search">搜索</el-button>
<el-button @click="resetHandle" :loading="tableData.loading" icon="Refresh">重置</el-button> <el-button @click="resetHandle" :loading="tableData.loading" icon="Refresh">重置</el-button>
@ -73,8 +80,16 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="等级" prop="levelName"></el-table-column> <el-table-column label="等级" prop="levelName"></el-table-column>
<el-table-column label="总消费金额(元)" prop="oneIncome"></el-table-column> <!-- <el-table-column label="总消费金额(元)" prop="oneIncome">
<el-table-column label="累计收益(元)" prop="totalIncome"></el-table-column> <template #default="scope">
{{ multiplyAndFormat(scope.row.oneIncome || 0) }}
</template>
</el-table-column> -->
<el-table-column label="累计收益(元)" prop="totalIncome">
<template #default="scope">
{{ multiplyAndFormat(scope.row.totalIncome || 0) }}
</template>
</el-table-column>
<el-table-column label="邀请时间" prop="inviteTime"></el-table-column> <el-table-column label="邀请时间" prop="inviteTime"></el-table-column>
</el-table> </el-table>
<!-- 收入明细 --> <!-- 收入明细 -->
@ -95,6 +110,9 @@
<el-tag disable-transitions type="info" v-if="scope.row.status == 'pending'"> <el-tag disable-transitions type="info" v-if="scope.row.status == 'pending'">
待入账 待入账
</el-tag> </el-tag>
<el-tag disable-transitions type="danger" v-if="scope.row.status == 'refund'">
已退款
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联订单号" prop="orderNo"></el-table-column> <el-table-column label="关联订单号" prop="orderNo"></el-table-column>
@ -127,17 +145,18 @@ const visible = ref(false)
const rowInfo = ref('') const rowInfo = ref('')
const querForm = ref({ const resetQuerForm = ref({
status: '',
userId: '', userId: '',
distributionLevelId: '' distributionLevelId: ''
}) })
const querForm = ref({ ...resetQuerForm.value })
const distributionLevelIdList = ref([]) const distributionLevelIdList = ref([])
function resetHandle() { function resetHandle() {
tabIndex.value = 0 querForm.value = { ...resetQuerForm.value }
querForm.value.userId = ''
querForm.value.distributionLevelId = ''
searchHandle() searchHandle()
} }
@ -156,6 +175,11 @@ const statusList = ref([
value: 'success', value: 'success',
label: '已入账', label: '已入账',
type: 'success' type: 'success'
},
{
value: 'refund',
label: '已退款',
type: 'danger'
} }
]) ])
@ -195,14 +219,16 @@ async function getTableData() {
id: rowInfo.value.id, id: rowInfo.value.id,
page: tableData.page, page: tableData.page,
size: tableData.size, size: tableData.size,
shopUserId: querForm.value.userId shopUserId: querForm.value.userId,
distributionLevelId: querForm.value.distributionLevelId
}) })
} else { } else {
res = await distributionFlowGet({ res = await distributionFlowGet({
id: rowInfo.value.id, id: rowInfo.value.id,
parentId: rowInfo.value.id, parentId: rowInfo.value.id,
shopUserId: querForm.value.userId, shopUserId: querForm.value.userId,
distributionLevelId: querForm.value.distributionLevelId distributionLevelId: querForm.value.distributionLevelId,
status: querForm.value.status
}) })
} }

View File

@ -40,7 +40,15 @@
@change="selectTimeChange"></el-date-picker> @change="selectTimeChange"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<selectUser v-model="queryForm.key" /> <!-- <selectUser v-model="queryForm.key" /> -->
<el-select v-model="queryForm.status" placeholder="请选择状态" style="width: 200px;">
<el-option label="已入账" value="success"></el-option>
<el-option label="待入账" value="pending"></el-option>
<el-option label="已退款" value="refund"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<selectUser v-model="queryForm.id" placeholder="分销员昵称/手机号" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div class="between"> <div class="between">
@ -84,11 +92,13 @@
<template #default="scope"> <template #default="scope">
<el-tag disable-transitions type="success" effect="dark" v-if="scope.row.status == 'success'">已入账</el-tag> <el-tag disable-transitions type="success" effect="dark" v-if="scope.row.status == 'success'">已入账</el-tag>
<el-tag disable-transitions type="info" effect="dark" v-if="scope.row.status == 'pending'">待入账</el-tag> <el-tag disable-transitions type="info" effect="dark" v-if="scope.row.status == 'pending'">待入账</el-tag>
<el-tag disable-transitions type="danger" effect="dark" v-if="scope.row.status == 'refund'">已退款</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联订单号" prop="orderNo" min-width="200"></el-table-column> <el-table-column label="关联订单号" prop="orderNo" min-width="200"></el-table-column>
<el-table-column label="总收益(元)" prop="rewardAmount" min-width="120"> <el-table-column label="总收益(元)" prop="rewardAmount" min-width="120">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.status == 'refund'">-</span>
{{ multiplyAndFormat(scope.row.rewardAmount || 0) }} {{ multiplyAndFormat(scope.row.rewardAmount || 0) }}
</template> </template>
</el-table-column> </el-table-column>
@ -123,11 +133,14 @@ const infoObj = ref({
successAmount: 0 successAmount: 0
}) })
const queryForm = ref({ const resetQuerForm = ref({
id: '',
key: '', key: '',
startTime: '', startTime: '',
endTime: '' endTime: '',
status: ''
}) })
const queryForm = ref({ ...resetQuerForm.value })
function searchHandle() { function searchHandle() {
tableData.page = 1; tableData.page = 1;
@ -135,11 +148,8 @@ function searchHandle() {
} }
function resetHandle() { function resetHandle() {
queryForm.value.key = '' queryForm.value = { ...resetQuerForm.value }
queryForm.value.startTime = ''
queryForm.value.startTime = ''
times.value = [] times.value = []
searchHandle() searchHandle()
} }
@ -154,8 +164,13 @@ const tableData = reactive({
// //
const times = ref([]) const times = ref([])
function selectTimeChange(e) { function selectTimeChange(e) {
queryForm.value.startTime = dayjs(e[0]).format('YYYY-MM-DD 00:00:00') if (e) {
queryForm.value.endTime = dayjs(e[1]).format('YYYY-MM-DD 23:59:59') queryForm.value.startTime = dayjs(e[0]).format('YYYY-MM-DD 00:00:00')
queryForm.value.endTime = dayjs(e[1]).format('YYYY-MM-DD 23:59:59')
} else {
queryForm.value.startTime = ''
queryForm.value.endTime = ''
}
} }
// //
@ -176,6 +191,7 @@ async function getTableData() {
const res = await distributionFlowGet({ const res = await distributionFlowGet({
page: tableData.page, page: tableData.page,
size: tableData.size, size: tableData.size,
...queryForm.value
}) })
tableData.list = res.records tableData.list = res.records
tableData.total = res.totalRow tableData.total = res.totalRow

View File

@ -3,7 +3,7 @@
<div> <div>
<el-form inline> <el-form inline>
<el-form-item> <el-form-item>
<selectUser v-model="queryForm.user" /> <selectUser v-model="queryForm.id" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-date-picker style="width: 300px" v-model="times" type="daterange" range-separator="" <el-date-picker style="width: 300px" v-model="times" type="daterange" range-separator=""
@ -87,11 +87,12 @@ const addUserDialogRef = ref(null)
const editorUserDialogRef = ref(null) const editorUserDialogRef = ref(null)
const distributionUserDetailRef = ref(null) const distributionUserDetailRef = ref(null)
const queryForm = ref({ const resetQuerForm = ref({
user: '', id: '',
startTime: '', startTime: '',
endTime: '' endTime: ''
}) })
const queryForm = ref({ ...resetQuerForm.value })
function searchHandle() { function searchHandle() {
tableData.page = 1; tableData.page = 1;
@ -99,11 +100,8 @@ function searchHandle() {
} }
function resetHandle() { function resetHandle() {
queryForm.value.user = '' queryForm.value = { ...resetQuerForm.value }
queryForm.value.startTime = ''
queryForm.value.startTime = ''
times.value = [] times.value = []
searchHandle() searchHandle()
} }

View File

@ -1,3 +1,4 @@
<!-- 变动记录弹窗 -->
<template> <template>
<el-dialog title="变动记录" width="1000px" v-model="visible"> <el-dialog title="变动记录" width="1000px" v-model="visible">
<div class="row"> <div class="row">
@ -8,7 +9,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input v-model="queryForm.key" placeholder="请输入用户ID/昵称" style="width: 200px;"></el-input> <selectUser v-model="queryForm.key" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="searchHandle" icon="Search" :loading="tableData.loading">搜索</el-button> <el-button type="primary" @click="searchHandle" icon="Search" :loading="tableData.loading">搜索</el-button>
@ -64,6 +65,7 @@
import { ref } from 'vue' import { ref } from 'vue'
import { multiplyAndFormat } from '@/utils' import { multiplyAndFormat } from '@/utils'
import { distributionFlow } from '@/api/coupon' import { distributionFlow } from '@/api/coupon'
import selectUser from '../../components/selectUser.vue'
const visible = ref(false) const visible = ref(false)