订单和用户关注粉丝等接口联调

This commit is contained in:
cuiyouliang 2025-06-17 18:05:38 +08:00
parent 2c6cafeeb5
commit e8326be198
4 changed files with 182 additions and 42 deletions

View File

@ -137,10 +137,35 @@ export function editUserData(data) {
} }
// 用户的关注、粉丝、好友列表 // 用户的关注、粉丝、好友列表
export function getUserFansFriendsFocusList(data) { export function getUserFriendsList(data) {
return request({ return request({
url: `/ums/fans/list`, url: `/ums/fans/friend/list?memberId=${data.memberId}`,
method: 'post', method: 'post',
data: data data: data
}); });
} }
// 用户的关注、粉丝、好友列表
export function getUserFocusList(data) {
return request({
url: `/ums/fans/follow/list?memberId=${data.memberId}`,
method: 'post',
data: data
});
}
// 用户的关注、粉丝、好友列表
export function getUserFansList(data) {
return request({
url: `/ums/fans/fan/list?memberId=${data.memberId}`,
method: 'post',
data: data
});
}
// 黑名单列表
export function getUserBlackList(params) {
return request({
url: `/ums/fans/block/list`,
method: 'get',
params
});
}

View File

@ -31,11 +31,10 @@
</el-card> </el-card>
<el-card class="mt10"> <el-card class="mt10">
<el-descriptions title="人员信息" :column="2" border label-class-name="my-label" contentClassName="my-content"> <el-descriptions title="人员信息" :column="2" border label-class-name="my-label" contentClassName="my-content">
<el-descriptions-item label="推广人信息">{{ orderDetail.orderSn }}</el-descriptions-item> <el-descriptions-item label="买家信息&推广人信息">{{ `${orderDetail.userName} ${orderDetail.userPhone}` }}</el-descriptions-item>
<el-descriptions-item label="买家信息">{{ orderDetail.userName }}</el-descriptions-item> <el-descriptions-item label="卖家信息">{{ `${orderDetail.contactUserName} ${orderDetail.contactPhone}` }}</el-descriptions-item>
<el-descriptions-item label="卖家信息">{{ orderDetail.userPhone }}</el-descriptions-item> <!-- <el-descriptions-item label="代理信息">{{ parseTime(orderDetail.createTime, '') }}</el-descriptions-item>
<el-descriptions-item label="代理信息">{{ parseTime(orderDetail.createTime, '') }}</el-descriptions-item> <el-descriptions-item label="分佣信息">{{ getPayType(orderDetail) }}</el-descriptions-item>-->
<el-descriptions-item label="分佣信息">{{ getPayType(orderDetail) }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="mt10"> <el-card class="mt10">

View File

@ -3,7 +3,7 @@
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="default" class="ry_form"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="default" class="ry_form">
<el-form-item label="订单类型" prop="orderType"> <el-form-item label="订单类型" prop="orderType">
<DictRadio <DictRadio
v-model="queryParams.status" v-model="queryParams.type"
radioData="oms_order_type" radioData="oms_order_type"
:radioList="orderTypeMap" :radioList="orderTypeMap"
size="small" size="small"
@ -24,10 +24,10 @@
@change="handleQuery" @change="handleQuery"
></DictRadio> ></DictRadio>
</el-form-item> </el-form-item>
<el-form-item label="提现状态" prop="orderType"> <el-form-item label="提现状态" prop="withdrawStatus">
<DictRadio <DictRadio
v-if="orderWithdrawMap.length > 0" v-if="orderWithdrawMap.length > 0"
v-model="queryParams.status" v-model="queryParams.withdrawStatus"
radioData="oms_withdraw_staus" radioData="oms_withdraw_staus"
:radioList="orderWithdrawMap" :radioList="orderWithdrawMap"
size="small" size="small"
@ -39,7 +39,7 @@
<el-form-item label="退款状态" prop="aftersaleStatus"> <el-form-item label="退款状态" prop="aftersaleStatus">
<DictRadio <DictRadio
v-if="orderAftersaleMap.length > 0" v-if="orderAftersaleMap.length > 0"
v-model="queryParams.status" v-model="queryParams.aftersaleStatus"
radioData="oms_aftersale_status" radioData="oms_aftersale_status"
:radioList="orderAftersaleMap" :radioList="orderAftersaleMap"
size="small" size="small"
@ -51,8 +51,8 @@
<el-form-item label="订单编号" prop="id"> <el-form-item label="订单编号" prop="id">
<el-input v-model.trim="queryParams.orderSn" placeholder="请输入订单编号" clearable size="small" @keyup.enter="handleQuery" /> <el-input v-model.trim="queryParams.orderSn" placeholder="请输入订单编号" clearable size="small" @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="交易流水号" prop="userPhone"> <el-form-item label="交易流水号" prop="orderSn">
<el-input v-model.trim="queryParams.userPhone" placeholder="请输入会员手机号" clearable size="small" @keyup.enter="handleQuery" /> <el-input v-model.trim="queryParams.userPhone" placeholder="请输入交易流水号" clearable size="small" @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="会员手机号" prop="userPhone"> <el-form-item label="会员手机号" prop="userPhone">
<el-input v-model.trim="queryParams.userPhone" placeholder="请输入会员手机号" clearable size="small" @keyup.enter="handleQuery" /> <el-input v-model.trim="queryParams.userPhone" placeholder="请输入会员手机号" clearable size="small" @keyup.enter="handleQuery" />
@ -84,31 +84,31 @@
</el-form> </el-form>
<el-table v-loading="loading" :data="omsOrderList" border cell-class-name="my-cell"> <el-table v-loading="loading" :data="omsOrderList" border cell-class-name="my-cell">
<el-table-column label="推广人信息" width="116"> <el-table-column label="推广人信息&买家信息" width="156">
<template v-slot="scope"> <template v-slot="scope">
<div>{{ scope.row.tenantContactName }}</div> <div>{{ scope.row.memberNickname }}</div>
<div>{{ scope.row.tenantContactPhone }}</div> <div>{{ scope.row.memberPhoneEncrypted }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="买家信息" width="116"> <!-- <el-table-column label="买家信息" width="116">
<template v-slot="scope"> <template v-slot="scope">
<div>{{ scope.row.memberUsername }}</div> <div>{{ scope.row.memberUsername }}</div>
<div>{{ scope.row.memberPhoneEncrypted }}</div> <div>{{ scope.row.memberPhoneEncrypted }}</div>
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column label="卖家信息" width="116"> <el-table-column label="卖家信息" width="116">
<template v-slot="scope"> <template v-slot="scope">
<div>{{ scope.row.tenantContactName }}</div> <div>{{ scope.row.tenantContactName }}</div>
<div>{{ scope.row.tenantContactPhone }}</div> <div>{{ scope.row.tenantContactPhone }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="代理信息" width="116"> <!-- <el-table-column label="代理信息" width="116">
<template v-slot="scope"> <template v-slot="scope">
<div>代理人姓名{{ scope.row.deliverySn }}</div> <div>代理人姓名{{ scope.row.deliverySn }}</div>
<div>代理区域{{ scope.row.deliverySn }}</div> <div>代理区域{{ scope.row.deliverySn }}</div>
<div>代理手机号{{ scope.row.deliverySn }}</div> <div>代理手机号{{ scope.row.deliverySn }}</div>
</template> </template>
</el-table-column> </el-table-column>-->
<!-- <el-table-column label="商品信息"> <!-- <el-table-column label="商品信息">
<template v-slot="scope"> <template v-slot="scope">
<div>{{ scope.row.productName }}</div> <div>{{ scope.row.productName }}</div>
@ -138,23 +138,23 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="分佣信息" prop="couponAmount" width="80"> </el-table-column> <!-- <el-table-column label="分佣信息" prop="couponAmount" width="80"> </el-table-column>-->
<el-table-column label="订单类型" prop="couponAmount" width="100"> <el-table-column label="订单类型" prop="couponAmount" width="100">
<template v-slot="scope"> <template v-slot="scope">
<el-tag type="primary"> <el-tag type="primary">
{{ getEmulistLabelById(scope.row.status, orderTypeMap) }} {{ getEmulistLabelById(scope.row.type, orderTypeMap) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="交易编号" prop="orderSn" width="120"> <el-table-column label="交易编号" prop="id" width="120" align="center">
<template v-slot="scope"> <template v-slot="scope">
<el-link type="primary" icon="Copy" link @click="copy(scope.row.orderSn)" :underline="false"> <el-link type="primary" icon="Copy" link @click="copy(scope.row.id)" :underline="false">
{{ scope.row.orderSn }} {{ scope.row.id }}
<el-icon><CopyDocument /></el-icon> <el-icon><CopyDocument /></el-icon>
</el-link> </el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="订单编号" prop="id" width="80"> </el-table-column> <el-table-column label="订单编号" prop="orderSn" width="80"> </el-table-column>
<el-table-column label="订单状态" prop="status" width="160"> <el-table-column label="订单状态" prop="status" width="160">
<template v-slot="scope"> <template v-slot="scope">
<div> <div>
@ -176,10 +176,10 @@
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="提现状态" prop="aftersaleStatus" width="100"> <el-table-column label="提现状态" prop="withdrawStatus" width="100">
<template v-slot="scope"> <template v-slot="scope">
<el-tag type="primary"> <el-tag type="primary">
{{ getEmulistLabelById(scope.row.aftersaleStatus, orderAftersaleMap) }} {{ getEmulistLabelById(scope.row.withdrawStatus, orderWithdrawMap) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -373,6 +373,9 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
payType: null, payType: null,
type: null,
aftersaleStatus: null,
withdrawStatus: null,
status: null, status: null,
Time: [], Time: [],
provinces: [], provinces: [],

View File

@ -115,6 +115,7 @@
<el-button size="small" type="text" @click="showUserLoginInfoModal(scope.row, true)">登录记录 </el-button> <el-button size="small" type="text" @click="showUserLoginInfoModal(scope.row, true)">登录记录 </el-button>
<el-button size="small" type="text">操作日志 </el-button> <el-button size="small" type="text">操作日志 </el-button>
<el-button size="small" type="text">封禁记录 </el-button> <el-button size="small" type="text">封禁记录 </el-button>
<el-button size="small" type="text" @click="showBlackListInfoModal(scope.row)">黑名单 </el-button>
<!-- <el-button size="small" type="text" @click="showStatistics(scope.row.id)" v-hasPermi="['ums:member:statistics']">查看数据 </el-button> <!-- <el-button size="small" type="text" @click="showStatistics(scope.row.id)" v-hasPermi="['ums:member:statistics']">查看数据 </el-button>
<el-button size="small" type="text" @click="goOrder(scope.row.phoneEncrypted)">查看下单</el-button> <el-button size="small" type="text" @click="goOrder(scope.row.phoneEncrypted)">查看下单</el-button>
<el-button size="small" type="text" @click="goCart(scope.row.phoneEncrypted)">查看购物车</el-button>--> <el-button size="small" type="text" @click="goCart(scope.row.phoneEncrypted)">查看购物车</el-button>-->
@ -123,7 +124,7 @@
</el-table> </el-table>
<pagination :total="total" v-model:page="queryParams.current" v-model:limit="queryParams.size" @pagination="getList" /> <pagination :total="total" v-model:page="queryParams.current" v-model:limit="queryParams.size" @pagination="getList" />
</div> </div>
<!-- 会员账户详情--> <!-- 会员账户详情-->
<el-dialog :title="userAccountModal.title" v-model="userAccountModal.open" width="500px" append-to-body> <el-dialog :title="userAccountModal.title" v-model="userAccountModal.open" width="500px" append-to-body>
<el-descriptions direction="vertical" :column="3" border> <el-descriptions direction="vertical" :column="3" border>
<el-descriptions-item label="钱包">{{ userAccountModal.data.wallet || 0 }}</el-descriptions-item> <el-descriptions-item label="钱包">{{ userAccountModal.data.wallet || 0 }}</el-descriptions-item>
@ -133,6 +134,52 @@
<el-descriptions-item label="历史总积分">{{ userAccountModal.data.totalIntegralBalance || 0 }}</el-descriptions-item> <el-descriptions-item label="历史总积分">{{ userAccountModal.data.totalIntegralBalance || 0 }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<!--黑名单信息-->
<el-dialog title="黑名单" width="800px" v-model="blackListModalInfo.open" append-to-body>
<el-table v-loading="blackListTableLoading" :data="blackListModalInfo.data" border empty-text="暂无数据">
<el-table-column label="手机号" prop="phone" width="150">
<template v-slot="scope">
{{ scope.row.fan.phone }}
</template>
</el-table-column>
<el-table-column label="昵称" prop="nickname" width="150">
<template v-slot="scope">
{{ scope.row.fan.nickname }}
</template>
</el-table-column>
<el-table-column label="头像" prop="avatar">
<template v-slot="scope">
{{ scope.row.fan.avatar }}
</template>
</el-table-column>
<el-table-column label="状态" prop="status" width="180">
<template v-slot="scope">
<div v-if="scope.row.fan.status == 0">封禁</div>
<div v-else-if="scope.row.fan.status == 1">正常</div>
</template>
</el-table-column>
<el-table-column label="性别" prop="gender" width="100">
<template v-slot="scope">
{{ scope.row.fan.gender }}
</template>
</el-table-column>
<el-table-column label="地址" prop="loginTime" width="100">
<template v-slot="scope">
{{ scope.row.fan.loginTime }}
</template>
</el-table-column>
<el-table-column label="等级" prop="level" width="100">
<template v-slot="scope">
{{ scope.row.fan.level }}
</template>
</el-table-column>
<el-table-column label="时间" prop="loginTime" width="100">
<template v-slot="scope">
{{ scope.row.fan.loginTime }}
</template>
</el-table-column>
</el-table>
</el-dialog>
<!--会员登录信息--> <!--会员登录信息-->
<el-dialog title="会员登录信息" v-model="userLoginInfoModalVisible" width="800px" append-to-body> <el-dialog title="会员登录信息" v-model="userLoginInfoModalVisible" width="800px" append-to-body>
<el-table v-loading="userLoginInfoTableLoading" :data="userLoginInfo.data" border empty-text="暂无数据"> <el-table v-loading="userLoginInfoTableLoading" :data="userLoginInfo.data" border empty-text="暂无数据">
@ -151,21 +198,55 @@
@pagination="showUserLoginInfoModal" @pagination="showUserLoginInfoModal"
/> />
</el-dialog> </el-dialog>
<!--用户粉丝关注好友列表--> <!--用户粉丝关注好友列表-->
<el-dialog <el-dialog
:title="userFansFriendFocusInfo.clickType == 1 ? '关注列表' : userFansFriendFocusInfo.clickType == 2 ? '粉丝列表' : '好友列表'" :title="userFansFriendFocusInfo.clickType == 1 ? '关注列表' : userFansFriendFocusInfo.clickType == 2 ? '粉丝列表' : '好友列表'"
v-model="userFansFriendFocusModalVisible" v-model="userFansFriendFocusModalVisible"
width="800px" width="1000px"
append-to-body append-to-body
> >
<el-table v-loading="userFansFriendFocusLoading" :data="userFansFriendFocusInfo.data" border empty-text="暂无数据"> <el-table v-loading="userFansFriendFocusLoading" :data="userFansFriendFocusInfo.data" border empty-text="暂无数据">
<el-table-column label="手机号" prop="phone" width="150" /> <el-table-column label="手机号" prop="phone" width="150">
<el-table-column label="IP" prop="ipaddr" width="150"></el-table-column> <template v-slot="scope">
<el-table-column label="登陆地点" prop="loginLocation" width="180" /> {{ scope.row.fan.phone }}
<el-table-column label="浏览器类型" prop="browser" /> </template>
<el-table-column label="操作系统" prop="os" width="100" /> </el-table-column>
<el-table-column label="登录时间" prop="loginTime" width="100" /> <el-table-column label="昵称" prop="nickname" width="150">
<template v-slot="scope">
{{ scope.row.fan.nickname }}
</template>
</el-table-column>
<el-table-column label="头像" prop="avatar">
<template v-slot="scope">
{{ scope.row.fan.avatar }}
</template>
</el-table-column>
<el-table-column label="状态" prop="status" width="180">
<template v-slot="scope">
<div v-if="scope.row.fan.status == 0">封禁</div>
<div v-else-if="scope.row.fan.status == 1">正常</div>
</template>
</el-table-column>
<el-table-column label="性别" prop="gender" width="100">
<template v-slot="scope">
{{ scope.row.fan.gender }}
</template>
</el-table-column>
<el-table-column label="地址" prop="loginTime" width="100">
<template v-slot="scope">
{{ scope.row.fan.loginTime }}
</template>
</el-table-column>
<el-table-column label="等级" prop="level" width="100">
<template v-slot="scope">
{{ scope.row.fan.level }}
</template>
</el-table-column>
<el-table-column label="时间" prop="loginTime" width="100">
<template v-slot="scope">
{{ scope.row.fan.loginTime }}
</template>
</el-table-column>
</el-table> </el-table>
<pagination <pagination
v-if="userFansFriendFocusInfo.total" v-if="userFansFriendFocusInfo.total"
@ -269,7 +350,10 @@ import {
upDateMemberStatus, upDateMemberStatus,
getUserLoginInfoData, getUserLoginInfoData,
editUserData, editUserData,
getUserFansFriendsFocusList getUserFriendsList,
getUserFocusList,
getUserFansList,
getUserBlackList
} from '@/api/ums/member'; } from '@/api/ums/member';
import dateUtil from '@/utils/DateUtil'; import dateUtil from '@/utils/DateUtil';
import { useUserStore } from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
@ -382,6 +466,7 @@ export default {
userFansFriendFocusInfo: { userFansFriendFocusInfo: {
total: 0, total: 0,
data: [], data: [],
record: {},
clickType: '' clickType: ''
}, },
// // // //
@ -390,7 +475,13 @@ export default {
size: 10 size: 10
}, },
userFansFriendFocusModalVisible: false, userFansFriendFocusModalVisible: false,
userFansFriendFocusLoading: false userFansFriendFocusLoading: false,
//
blackListModalInfo: {
open: false,
data: {}
},
blackListTableLoading: false
}; };
}, },
created() { created() {
@ -651,15 +742,36 @@ export default {
}); });
}, },
//
showBlackListInfoModal(record) {
const reqParams = {
myId: record.id
};
this.blackListTableLoading = true;
getUserBlackList(reqParams)
.then((response) => {
const { data = [] } = response.data || {};
this.blackListModalInfo = {
open: true,
data: response.data || []
};
this.blackListTableLoading = false;
})
.catch(() => {
this.blackListTableLoading = false;
});
},
// clickType 1 2 3 // clickType 1 2 3
showUserFansListModal(clickType, record, isFirst) { showUserFansListModal(clickType, record, isFirst) {
const { id } = this.userFansFriendFocusInfo.record || {}; const { id } = this.userFansFriendFocusInfo.record || {};
const reqParams = { const reqParams = {
...this.loginDataParams, ...this.fansPageParams,
id: record.id ? record.id : id memberId: record.id ? record.id : id
}; };
this.userFansFriendFocusLoading = true; this.userFansFriendFocusLoading = true;
getUserFansFriendsFocusList(reqParams) const reqEntity = clickType == 1 ? getUserFocusList : clickType == 2 ? getUserFansList : getUserFriendsList;
reqEntity(reqParams)
.then((response) => { .then((response) => {
const { records = [], total = 0 } = response.data || {}; const { records = [], total = 0 } = response.data || {};
if (isFirst) { if (isFirst) {
@ -668,6 +780,7 @@ export default {
this.userFansFriendFocusInfo = { this.userFansFriendFocusInfo = {
total: total, total: total,
data: records || [], data: records || [],
record: record,
clickType: clickType clickType: clickType
}; };
this.userFansFriendFocusLoading = false; this.userFansFriendFocusLoading = false;