feat: 添加企业微信用户余额修改功能
在用户详情页面中增加余额修改功能,允许管理员直接修改用户余额。同时,更新订单查询接口以支持通过企业微信用户ID查询订单记录,并优化用户详情页面的信息展示。
This commit is contained in:
parent
56904be993
commit
1aa7cee0c0
|
@ -1,9 +1,11 @@
|
||||||
import { http } from "@/utils/http";
|
import { http } from "@/utils/http";
|
||||||
|
import { UserDTO } from "../system/user";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 企业微信用户信息
|
* 企业微信用户信息
|
||||||
*/
|
*/
|
||||||
export interface QyUserDTO {
|
export interface QyUserDTO {
|
||||||
|
sysUser?: UserDTO;
|
||||||
/** 用户ID(导出列:用户ID) */
|
/** 用户ID(导出列:用户ID) */
|
||||||
id?: number;
|
id?: number;
|
||||||
/** 全局唯一ID(导出列:全局唯一ID) */
|
/** 全局唯一ID(导出列:全局唯一ID) */
|
||||||
|
|
|
@ -7,6 +7,10 @@ export interface OrderQuery extends BasePageQuery {
|
||||||
* 微信openid
|
* 微信openid
|
||||||
*/
|
*/
|
||||||
openid?: string;
|
openid?: string;
|
||||||
|
/**
|
||||||
|
* 企业微信用户ID或汇邦云用户ID
|
||||||
|
*/
|
||||||
|
userid?: string;
|
||||||
/** 柜机id */
|
/** 柜机id */
|
||||||
cabinetId?: number;
|
cabinetId?: number;
|
||||||
/** 格口id */
|
/** 格口id */
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { ref, onMounted, watch } from "vue";
|
||||||
import { useRoute, useRouter } from "vue-router";
|
import { useRoute, useRouter } from "vue-router";
|
||||||
import { type QyUserDTO, getQyUserDetailApi } from "@/api/qy/qyUser";
|
import { type QyUserDTO, getQyUserDetailApi } from "@/api/qy/qyUser";
|
||||||
import { getOrderListApi, type OrderDTO } from "@/api/shop/order";
|
import { getOrderListApi, type OrderDTO } from "@/api/shop/order";
|
||||||
import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
|
import BalanceEditModal from "./BalanceEditModal.vue";
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "QyUserDetail"
|
name: "QyUserDetail"
|
||||||
|
@ -13,6 +13,8 @@ const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const userInfo = ref<QyUserDTO>({});
|
const userInfo = ref<QyUserDTO>({});
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
|
const balanceVisible = ref(false);
|
||||||
|
const currentBalance = ref(0);
|
||||||
|
|
||||||
// 基础信息
|
// 基础信息
|
||||||
const basicInfo = ref({
|
const basicInfo = ref({
|
||||||
|
@ -37,6 +39,7 @@ async function fetchOrders() {
|
||||||
orderLoading.value = true;
|
orderLoading.value = true;
|
||||||
const { data } = await getOrderListApi({
|
const { data } = await getOrderListApi({
|
||||||
openid: userInfo.value.openid,
|
openid: userInfo.value.openid,
|
||||||
|
userid: userInfo.value.userid,
|
||||||
pageSize: pagination.value.pageSize,
|
pageSize: pagination.value.pageSize,
|
||||||
pageNum: pagination.value.currentPage
|
pageNum: pagination.value.currentPage
|
||||||
});
|
});
|
||||||
|
@ -68,6 +71,11 @@ async function fetchUserDetail() {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
fetchUserDetail();
|
fetchUserDetail();
|
||||||
});
|
});
|
||||||
|
async function handleModifyBalance(row: QyUserDTO) {
|
||||||
|
currentBalance.value = row.balance || 0;
|
||||||
|
balanceVisible.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -90,24 +98,22 @@ onMounted(() => {
|
||||||
<el-descriptions class="user-details" :column="1" border>
|
<el-descriptions class="user-details" :column="1" border>
|
||||||
<el-descriptions-item label="姓名">{{ userInfo.name }}</el-descriptions-item>
|
<el-descriptions-item label="姓名">{{ userInfo.name }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="手机号">{{ userInfo.mobile }}</el-descriptions-item>
|
<el-descriptions-item label="手机号">{{ userInfo.mobile }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="余额">¥{{ userInfo.balance?.toFixed(2) }}</el-descriptions-item>
|
<el-descriptions-item label="余额">¥{{ userInfo.balance?.toFixed(2) }} <el-button type="primary" size="small"
|
||||||
|
@click="handleModifyBalance(userInfo)">修改</el-button></el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="info-card">
|
<el-card class="info-card">
|
||||||
<div class="tab-header">
|
<div class="tab-header">
|
||||||
<el-tabs type="card" v-model="activeTab">
|
<el-tabs type="card" v-model="activeTab">
|
||||||
<el-tab-pane label="基础信息" name="basic"></el-tab-pane>
|
<el-tab-pane label="基础信息" name="basic"></el-tab-pane>
|
||||||
<!-- <el-tab-pane label="订单记录" name="orders"></el-tab-pane> -->
|
<el-tab-pane label="订单记录" name="orders"></el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-descriptions class="info-details" v-if="activeTab === 'basic'" :column="2" border>
|
<el-descriptions class="info-details" v-if="activeTab === 'basic'" :column="2" border>
|
||||||
<el-descriptions-item label="用户ID">{{ userInfo.userid }}</el-descriptions-item>
|
<el-descriptions-item label="用户ID">{{ userInfo.userid }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="企业ID">{{ userInfo.corpid }}</el-descriptions-item>
|
<el-descriptions-item label="企业ID">{{ userInfo.corpid }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="注册时间">{{ basicInfo.registerTime }}</el-descriptions-item>
|
<el-descriptions-item label="职务信息">{{ userInfo.position }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="最后登录">{{ basicInfo.lastLogin }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="登录次数">{{ basicInfo.loginCount }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="常用设备">{{ basicInfo.device }}</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<div class="info-details" v-if="activeTab === 'orders'">
|
<div class="info-details" v-if="activeTab === 'orders'">
|
||||||
|
@ -136,6 +142,7 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
|
<BalanceEditModal v-model:visible="balanceVisible" :row="userInfo" @refresh="fetchUserDetail" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue