Bläddra i källkod

feat(汇安融): 订单页把缺的六格显示出来,含退款原因

列表此前只有订单号/商户订单号/商品名称/金额/交易状态/交易方式/商户编号/
门店编码/交易时间。实收金额、手续费、渠道成本、支付宝交易号、退款时间、
退款原因六格在列表里一列都没有;详情弹窗里本来有前五格,只是值一直是空的。

* 列表补这 6 列;
* 详情弹窗补「退款原因」(上游不会回传它,是本地记的我方发出去的那句);
* HarOrderVO 类型定义补 refund_reason。

读数的量法(本仓 frontend 没有测试框架,ts:check 有历史遗留的非零基线,
命令恒 exit 2,所以「跑绿了」在本仓不成立):

* 基线 logs/_fe-tscheck-har-refund.txt —— 329 行 / 52272 B /
  sha256 4d85f23ac619235c1b9c50c0ac4942ea7a76dd08e8b26aa6141c5994cd8a089a;
  改后 logs/_fe-tscheck-har-fields-final.txt 与之 `cmp` 逐字节相同。
* 但「输出没变」只有在**证明这两个文件确实被检查**之后才算数,所以对两个
  被改文件各做了一次正对照(各注入一条、跑完即还原并复核 sha256):
  - 往 har.ts 末尾塞 `export const __probeTc: number = "x";`
    ⇒ 报 src/api/module_payment/har.ts(339,14) error TS2322;
  - 把 .vue **模板里**那行换成 `{{ __probeUndefinedSymbol__ }}`
    ⇒ 报 src/views/module_payment/har/order/index.vue(404,14) error TS2339。
  两条都命中被改的那一个文件 —— 说明模板表达式确实在检查范围内。
* 还原后两个文件的 sha256 与探针前一致:
  har.ts 5af41f4df508911d0a221cea78b883465d87fc9ac3b006146b15ed5173d43144、
  index.vue dbb44bcd82253dc1bb1b011fbb163454fcff56512e504a51d21671c3f22e1cf2。
alphaH 2 veckor sedan
förälder
incheckning
0f63ec6035

+ 2 - 0
frontend/src/api/module_payment/har.ts

@@ -114,6 +114,8 @@ export interface HarOrderVO {
   trade_status: string;
   trade_time?: string;
   refund_time?: string;
+  /** 退款原因:我方发给上游的那一句。上游不回传,非退款单为 null */
+  refund_reason?: string;
   upstream_create_time?: string;
   rcv_amount?: string;
   fee_amount?: string;

+ 23 - 0
frontend/src/views/module_payment/har/order/index.vue

@@ -124,6 +124,15 @@
         <el-table-column label="金额(元)" width="110">
           <template #default="{ row }">¥{{ row.price }}</template>
         </el-table-column>
+        <el-table-column label="实收金额(元)" width="120">
+          <template #default="{ row }">{{ row.rcv_amount != null ? "¥" + row.rcv_amount : "-" }}</template>
+        </el-table-column>
+        <el-table-column label="手续费(元)" width="110">
+          <template #default="{ row }">{{ row.fee_amount != null ? "¥" + row.fee_amount : "-" }}</template>
+        </el-table-column>
+        <el-table-column label="渠道成本(元)" width="120">
+          <template #default="{ row }">{{ row.channel_amount != null ? "¥" + row.channel_amount : "-" }}</template>
+        </el-table-column>
         <el-table-column label="交易状态" width="100">
           <template #default="{ row }">
             <el-tag :type="HAR_TRADE_STATUS_TAG[row.trade_status] || 'info'">
@@ -140,11 +149,22 @@
         <el-table-column prop="third_shop_code" label="门店编码" min-width="130">
           <template #default="{ row }">{{ row.third_shop_code || "-" }}</template>
         </el-table-column>
+        <el-table-column prop="platform_trade_no" label="支付宝交易号" min-width="200" show-overflow-tooltip>
+          <template #default="{ row }">{{ row.platform_trade_no || "-" }}</template>
+        </el-table-column>
         <el-table-column label="交易时间" width="170">
           <template #default="{ row }">
             {{ row.trade_time ? dayjs(row.trade_time).format("YYYY-MM-DD HH:mm:ss") : "-" }}
           </template>
         </el-table-column>
+        <el-table-column label="退款时间" width="170">
+          <template #default="{ row }">
+            {{ row.refund_time ? dayjs(row.refund_time).format("YYYY-MM-DD HH:mm:ss") : "-" }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="refund_reason" label="退款原因" min-width="160" show-overflow-tooltip>
+          <template #default="{ row }">{{ row.refund_reason || "-" }}</template>
+        </el-table-column>
         <el-table-column label="操作" width="150" fixed="right">
           <template #default="{ row }">
             <el-button
@@ -380,6 +400,9 @@
         <el-descriptions-item label="退款时间">
           {{ formatTime(detail.refund_time) }}
         </el-descriptions-item>
+        <el-descriptions-item label="退款原因" :span="2">
+          {{ detail.refund_reason || "-" }}
+        </el-descriptions-item>
         <el-descriptions-item label="上游创建时间">
           {{ formatTime(detail.upstream_create_time) }}
         </el-descriptions-item>