Browse Source

feat(lakala): 添加分账接收方用户信息展示功能

- 在分账接收方列表中新增用户信息列,显示用户ID、昵称、用户名和手机号
- 修改失败原因字段标签为备注,统一前后端字段含义
- 后端模型关联用户表,查询时携带用户基础信息
- 前端优化用户信息展示样式,支持空值处理
- 调整列表页和详情页的字段显示逻辑
runphp 4 tháng trước cách đây
mục cha
commit
877722da01

+ 52 - 2
resource/admin/ProfitShareReceiver.vue

@@ -52,6 +52,31 @@
           </template>
         </el-table-column>
         <el-table-column prop="action_text" label="申请类型" width="100" />
+        <el-table-column label="用户信息" min-width="200">
+          <template #default="{ row }">
+            <div class="user-info">
+              <div v-if="row.user" class="user-details">
+                <div class="user-line">
+                  <span class="label">用户ID:</span>
+                  <span class="value">{{ row.user.id || '-' }}</span>
+                </div>
+                <div class="user-line">
+                  <span class="label">昵称:</span>
+                  <span class="value">{{ row.user.nickname || '-' }}</span>
+                </div>
+                <div class="user-line">
+                  <span class="label">用户名:</span>
+                  <span class="value">{{ row.user.username || '-' }}</span>
+                </div>
+                <div class="user-line">
+                  <span class="label">手机:</span>
+                  <span class="value">{{ row.user.mobile || '-' }}</span>
+                </div>
+              </div>
+              <div v-else>-</div>
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column prop="receiver_name" label="接收方名称" min-width="120" />
         <el-table-column prop="receiver_no" label="接收方编号" min-width="150" />
         <el-table-column prop="acct_name" label="收款账户名称" min-width="120" />
@@ -63,7 +88,7 @@
         </el-table-column>
         <el-table-column prop="contact_mobile" label="联系手机号" width="120" />
         <el-table-column prop="status_text" label="状态" width="100" />
-        <el-table-column prop="fail_reason" label="失败原因" min-width="150" />
+        <el-table-column prop="fail_reason" label="备注" min-width="150" />
         <el-table-column prop="create_time" label="申请时间" width="180" />
         <el-table-column prop="update_time" label="更新时间" width="180" />
         <el-table-column label="操作" width="150" fixed="right">
@@ -139,7 +164,7 @@
         <el-form-item label="状态:">
           <span>{{ detailData.status_text }}</span>
         </el-form-item>
-        <el-form-item v-if="detailData.fail_reason" label="失败原因:">
+        <el-form-item v-if="detailData.fail_reason" label="备注:">
           <span>{{ detailData.fail_reason }}</span>
         </el-form-item>
         <el-form-item label="申请时间:">
@@ -471,4 +496,29 @@ export default {
   margin-top: 20px;
   text-align: right;
 }
+
+.user-info {
+  display: flex;
+  flex-direction: column;
+}
+
+.user-details {
+  display: flex;
+  flex-direction: column;
+}
+
+.user-line {
+  display: flex;
+  align-items: center;
+}
+
+.label {
+  font-weight: bold;
+  margin-right: 10px;
+}
+
+.value {
+  flex-grow: 1;
+}
+
 </style>

+ 4 - 0
src/Entity/ProfitShareReceiverEntity.php

@@ -13,6 +13,7 @@ use SixShop\Lakala\Enum\ReceiverStatusEnum;
 use SixShop\Lakala\Facade\LedgerService;
 use SixShop\Lakala\Facade\MMSService;
 use SixShop\Lakala\Model\ProfitShareReceiverModel;
+use think\db\Query;
 use think\facade\Db;
 use think\Model;
 use think\Paginator;
@@ -47,6 +48,9 @@ class ProfitShareReceiverEntity extends BaseEntity
     public function getReceiverList(array $params, array $pageAndLimit): Paginator
     {
         return $this->withSearch(['order_no', 'status', 'user_id'], $params)
+            ->with(['user' => function (Query $query) {
+                $query->field(['id', 'nickname', 'avatar', 'username', 'mobile']);
+            }])
             ->append(['action_text','status_text'])
             ->order('id', 'desc')
             ->paginate($pageAndLimit);

+ 10 - 0
src/Model/ProfitShareReceiverModel.php

@@ -1,17 +1,21 @@
 <?php
 declare(strict_types=1);
+
 namespace SixShop\Lakala\Model;
 
+use app\model\User;
 use SixShop\Lakala\Enum\ReceiverActionEnum;
 use SixShop\Lakala\Enum\ReceiverStatusEnum;
 use SixShop\Payment\Enum\NumberBizEnum;
 use think\db\Query;
 use think\Model;
 use think\model\concern\SoftDelete;
+use think\model\relation\BelongsTo;
 
 class ProfitShareReceiverModel extends Model
 {
     use SoftDelete;
+
     protected function getOptions(): array
     {
         return [
@@ -34,6 +38,7 @@ class ProfitShareReceiverModel extends Model
     {
         return $data['action']->toString();
     }
+
     public function getStatusTextAttr($value, $data)
     {
         return $data['status']->toString();
@@ -50,4 +55,9 @@ class ProfitShareReceiverModel extends Model
     {
         $value && $query->where('order_no', 'like', "%{$value}%");
     }
+
+    public function user(): BelongsTo
+    {
+        return $this->belongsTo(User::class, 'user_id', 'id');
+    }
 }