From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/member/user/detail/index.vue |  160 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 160 insertions(+), 0 deletions(-)

diff --git a/src/views/member/user/detail/index.vue b/src/views/member/user/detail/index.vue
new file mode 100644
index 0000000..9818219
--- /dev/null
+++ b/src/views/member/user/detail/index.vue
@@ -0,0 +1,160 @@
+<template>
+  <div v-loading="loading">
+    <el-row :gutter="10">
+      <!-- 宸︿笂瑙掞細鍩烘湰淇℃伅 -->
+      <el-col :span="14" class="detail-info-item">
+        <UserBasicInfo :user="user">
+          <template #header>
+            <div class="card-header">
+              <CardTitle title="鍩烘湰淇℃伅" />
+              <el-button size="small" text type="primary" @click="openForm('update')">
+                缂栬緫
+              </el-button>
+            </div>
+          </template>
+        </UserBasicInfo>
+      </el-col>
+      <!-- 鍙充笂瑙掞細璐︽埛淇℃伅 -->
+      <el-col :span="10" class="detail-info-item">
+        <el-card class="h-full" shadow="never">
+          <template #header>
+            <CardTitle title="璐︽埛淇℃伅" />
+          </template>
+          <UserAccountInfo :user="user" :wallet="wallet" />
+        </el-card>
+      </el-col>
+      <!-- 涓嬭竟锛氳处鎴锋槑缁� -->
+      <!-- TODO 鑺嬭壙锛氥�愯鍗曠鐞嗐�戙�愬敭鍚庣鐞嗐�戙�愭敹钘忚褰曘��-->
+      <el-card header="璐︽埛鏄庣粏" shadow="never" style="width: 100%; margin-top: 20px">
+        <template #header>
+          <CardTitle title="璐︽埛鏄庣粏" />
+        </template>
+        <el-tabs>
+          <el-tab-pane label="绉垎">
+            <UserPointList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="绛惧埌" lazy>
+            <UserSignList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="鎴愰暱鍊�" lazy>
+            <UserExperienceRecordList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="浣欓" lazy>
+            <UserBalanceList :wallet-id="wallet.id" />
+          </el-tab-pane>
+          <el-tab-pane label="鏀惰揣鍦板潃" lazy>
+            <UserAddressList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="璁㈠崟绠$悊" lazy>
+            <UserOrderList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="鍞悗绠$悊" lazy>
+            <UserAfterSaleList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="鏀惰棌璁板綍" lazy>
+            <UserFavoriteList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="浼樻儬鍔�" lazy>
+            <UserCouponList :user-id="id" />
+          </el-tab-pane>
+          <el-tab-pane label="鎺ㄥ箍鐢ㄦ埛" lazy>
+            <UserBrokerageList :bind-user-id="id" />
+          </el-tab-pane>
+        </el-tabs>
+      </el-card>
+    </el-row>
+  </div>
+
+  <!-- 琛ㄥ崟寮圭獥锛氭坊鍔�/淇敼 -->
+  <UserForm ref="formRef" @success="getUserData(id)" />
+</template>
+<script lang="ts" setup>
+import * as WalletApi from '@/api/pay/wallet/balance'
+import * as UserApi from '@/api/member/user'
+import { useTagsViewStore } from '@/store/modules/tagsView'
+import UserForm from '@/views/member/user/UserForm.vue'
+import UserAccountInfo from './UserAccountInfo.vue'
+import UserAddressList from './UserAddressList.vue'
+import UserBasicInfo from './UserBasicInfo.vue'
+import UserBrokerageList from './UserBrokerageList.vue'
+import UserCouponList from './UserCouponList.vue'
+import UserExperienceRecordList from './UserExperienceRecordList.vue'
+import UserOrderList from './UserOrderList.vue'
+import UserPointList from './UserPointList.vue'
+import UserSignList from './UserSignList.vue'
+import UserFavoriteList from './UserFavoriteList.vue'
+import UserAfterSaleList from './UserAftersaleList.vue'
+import UserBalanceList from './UserBalanceList.vue'
+import { CardTitle } from '@/components/Card/index'
+import { ElMessage } from 'element-plus'
+
+defineOptions({ name: 'MemberDetail' })
+
+const loading = ref(true) // 鍔犺浇涓�
+const user = ref<UserApi.UserVO>({} as UserApi.UserVO)
+
+/** 娣诲姞/淇敼鎿嶄綔 */
+const formRef = ref()
+const openForm = (type: string) => {
+  formRef.value.open(type, id)
+}
+
+/** 鑾峰緱鐢ㄦ埛 */
+const getUserData = async (id: number) => {
+  loading.value = true
+  try {
+    user.value = await UserApi.getUser(id)
+  } finally {
+    loading.value = false
+  }
+}
+
+/** 鍒濆鍖� */
+const { currentRoute } = useRouter() // 璺敱
+const { delView } = useTagsViewStore() // 瑙嗗浘鎿嶄綔
+const route = useRoute()
+const id = route.params.id
+/* 鐢ㄦ埛閽卞寘鐩稿叧淇℃伅 */
+const WALLET_INIT_DATA = {
+  balance: 0,
+  totalExpense: 0,
+  totalRecharge: 0
+} as WalletApi.WalletVO // 閽卞寘鍒濆鍖栨暟鎹�
+const wallet = ref<WalletApi.WalletVO>(WALLET_INIT_DATA) // 閽卞寘淇℃伅
+
+/** 鏌ヨ鐢ㄦ埛閽卞寘淇℃伅 */
+const getUserWallet = async () => {
+  if (!id) {
+    wallet.value = WALLET_INIT_DATA
+    return
+  }
+  const params = { userId: id }
+  wallet.value = (await WalletApi.getWallet(params)) || WALLET_INIT_DATA
+}
+
+onMounted(() => {
+  if (!id) {
+    ElMessage.warning('鍙傛暟閿欒锛屼細鍛樼紪鍙蜂笉鑳戒负绌猴紒')
+    delView(unref(currentRoute))
+    return
+  }
+  getUserData(id)
+  getUserWallet()
+})
+</script>
+<style lang="css" scoped>
+.detail-info-item:first-child {
+  padding-left: 0 !important;
+}
+
+/* first-child 涓嶇敓鏁堟湁娌℃湁澶т浆缁欑湅涓媞.q */
+.detail-info-item:nth-child(2) {
+  padding-right: 0 !important;
+}
+
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+</style>

--
Gitblit v1.8.0