1、合作商余额查询

2、分油账户司机可用额度
This commit is contained in:
2026-10-20 23:21:10 +08:00
parent 45452c1799
commit fafd3e2c16
134 changed files with 2344 additions and 352 deletions
+178 -46
View File
@@ -81,6 +81,25 @@
>{{ item.name }}</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="企油通发放态">
<a-select v-decorator="['oil_status_zsy', { initialValue: -1 }]">
<a-select-option :value="-1">全部</a-select-option>
<a-select-option :value="0">未提交</a-select-option>
<a-select-option :value="1">发放中</a-select-option>
<a-select-option :value="2">发放成功</a-select-option>
<a-select-option :value="3">发放失败</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="退款状态">
<a-select v-decorator="['refund_status', { initialValue: -1 }]">
<a-select-option :value="-1">全部</a-select-option>
<a-select-option :value="0">未退款</a-select-option>
<a-select-option :value="1">退款中</a-select-option>
<a-select-option :value="2">已退款</a-select-option>
<a-select-option :value="3">退款失败</a-select-option>
<a-select-option :value="4">待人工确认</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="商品编码">
<a-input v-decorator="['goods_no']" placeholder="商品编码" />
</a-form-item>
@@ -133,10 +152,10 @@
<tbody class="ant-table-tbody">
<template v-for="(item) in orderList.data">
<tr class="order-empty" :key="`order_${item.order_id}_1`">
<td colspan="15"></td>
<td colspan="16"></td>
</tr>
<tr :key="`order_${item.order_id}_2`">
<td colspan="15">
<td colspan="16">
<span class="mr-20">{{ item.create_time }}</span>
<span class="mr-20">订单号:{{ item.order_no }}</span>
<platform-icon :name="item.platform" :showTips="true" />
@@ -163,47 +182,58 @@
</td>
<td>
<div class="actions">
<!--<router-link
v-if="$auth('/order/detail')"
:to="{ path: '/order/detail', query: { orderId: item.order_id } }"
>详情</router-link>
<a
v-action:deliver
v-if="(
item.pay_status == PayStatusEnum.SUCCESS.value
&& item.delivery_type == DeliveryTypeEnum.EXPRESS.value
&& item.delivery_status == DeliveryStatusEnum.NOT_DELIVERED.value
&& !inArray(item.order_status, [OrderStatusEnum.CANCELLED.value, OrderStatusEnum.APPLY_CANCEL.value])
)"
@click="handleDelivery(item)"
>发货</a>
<a
v-action:cancel
v-if="item.order_status == OrderStatusEnum.APPLY_CANCEL.value"
@click="handleCancel(item)"
>审核取消</a>
<a v-action:delete @click="handleDelete(item)">删除</a>
<a
v-if="$auth('/order/cancelshare') && (goodsItm.oilCardType !== 'zsy_ticket') && (
inArray(item.order_status, [OrderStatusEnum.COMPLETED.value])
)"
@click="handleCancelShare(goodsItm)"
>分油撤销</a>-->
<!--有付款权限,订单状态为进行中,已支付,并且未使用-->
<a
v-if="$auth('/order/pay') && (
inArray(item.order_status, [OrderStatusEnum.NORMAL.value])
) && inArray(item.pay_status, [PayStatusEnum.SUCCESS.value]) && goodsItm.use_status === 0 && goodsItm.oil_status === 1 && goodsItm.oilCardType === 'zsy_ticket'"
@click="handlePay(goodsItm)"
>付款码</a>
<a
v-if="$auth('/order/pay') && (
inArray(item.order_status, [OrderStatusEnum.NORMAL.value])
) && inArray(item.pay_status, [PayStatusEnum.SUCCESS.value]) && goodsItm.oil_status === 0 && goodsItm.oilCardType === 'zsy_ticket'"
@click="handleShare(goodsItm)"
>手动分油</a>
<!-- 企油通:发放/加油/退款/发票,与合作商订单页同一套接口 -->
<template v-if="goodsItm.qyt">
<a
v-if="goodsItm.qyt.oil_status_zsy === 3 && goodsItm.qyt.oil_status === 0"
@click="handleShare(goodsItm.qyt)"
>重新发放</a>
<a
v-if="goodsItm.qyt.oil_status_zsy === 2 && goodsItm.qyt.oil_status === 1
&& goodsItm.qyt.refund_status !== 2 && Number(remainAmount(goodsItm.qyt)) > 0"
@click="handlePay(goodsItm.qyt)"
>加油链接</a>
<a
v-if="goodsItm.qyt.oil_status_zsy === 2 && goodsItm.qyt.oil_status === 1"
@click="handleOil(goodsItm.qyt)"
>重推发放结果</a>
<a
v-if="goodsItm.qyt.oil_status_zsy === 2 && goodsItm.qyt.use_status === 1"
@click="handleUse(goodsItm.qyt)"
>重推加油结果</a>
<a v-if="canRefund(goodsItm.qyt)" @click="handleRefund(goodsItm.qyt)">{{ refundLabel(goodsItm.qyt) }}</a>
<a v-if="goodsItm.qyt.use_status === 1" @click="handleInvoice(goodsItm.qyt)">发票</a>
</template>
<span v-else-if="goodsItm.oilCardType === 'zsy_ticket'" class="c-muted-1">未生成发放单</span>
</div>
</td>
<!-- 司机(实名信息随单固化) -->
<td>
<template v-if="goodsItm.qyt">
<p class="mtb-2">{{ goodsItm.qyt.driver_name || '-' }}</p>
<p class="mtb-2 f-13">{{ goodsItm.qyt.mobile }}</p>
<p class="mtb-2 f-13">{{ goodsItm.qyt.id_card_mask || '-' }}</p>
<p class="mtb-2 f-13">车牌:{{ goodsItm.qyt.plate_no || '-' }}</p>
</template>
<span v-else>-</span>
</td>
<!-- 企油通单号 -->
<td>
<template v-if="goodsItm.qyt">
<p class="mtb-2 f-13">批次:{{ goodsItm.qyt.batch_no || '-' }}</p>
<p class="mtb-2 f-13">运单:{{ goodsItm.qyt.waybill_no || '-' }}</p>
</template>
<span v-else>-</span>
</td>
<!-- 加油信息 -->
<td>
<template v-if="goodsItm.qyt && goodsItm.qyt.use_status === 1">
<p class="mtb-2 f-13">已加油:¥{{ goodsItm.qyt.used_amount }}({{ goodsItm.qyt.used_num }} 次)</p>
<p class="mtb-2 f-13">剩余:¥{{ remainAmount(goodsItm.qyt) }}</p>
<p class="mtb-2 f-13">最近:{{ goodsItm.qyt.station_name || '-' }} {{ goodsItm.qyt.oil_name }} {{ goodsItm.qyt.litter }}L</p>
</template>
<span v-else>-</span>
</td>
<template v-if="goodsIdx===0">
<td :rowspan="item.goods.length">
<p>¥{{ item.pay_price }}</p>
@@ -252,6 +282,17 @@
:color="goodsItm.use_status == UseStatusEnum.USE.value ? 'green' : ''"
>{{ UseStatusEnum[goodsItm.use_status].name }}</a-tag>
</p>
<template v-if="goodsItm.qyt">
<p class="mtb-2">
<span class="f-13">企油通:</span>
<a-tag :color="qytColor(goodsItm.qyt.oil_status_zsy)">{{ qytText(goodsItm.qyt.oil_status_zsy) }}</a-tag>
</p>
<p v-if="goodsItm.qyt.oil_text" class="mtb-2 f-13 order-remark">{{ goodsItm.qyt.oil_text }}</p>
<p v-if="goodsItm.qyt.refund_status > 0" class="mtb-2">
<span class="f-13">退款:</span>
<a-tag :color="refundColor(goodsItm.qyt.refund_status)">{{ refundText(goodsItm.qyt.refund_status) }}</a-tag>
</p>
</template>
<p
v-if="[OrderStatusEnum.CANCELLED.value,OrderStatusEnum.APPLY_CANCEL.value].includes(item.order_status)"
class="mtb-2"
@@ -284,8 +325,13 @@
<DeliveryForm ref="DeliveryForm" @handleSubmit="handleRefresh" />
<CancelForm ref="CancelForm" @handleSubmit="handleRefresh" />
<CancelShareForm ref="CancelShareForm" @handleSubmit="handleRefresh" />
<!-- 企油通相关弹窗直接复用合作商订单页的组件,底层调的是 /partners.order/* -->
<ShareForm ref="ShareForm" @handleSubmit="handleRefresh" />
<PayForm ref="PayForm" @handleSubmit="handleRefresh" />
<OilForm ref="OilForm" @handleSubmit="handleRefresh" />
<UseForm ref="UseForm" @handleSubmit="handleRefresh" />
<RefundForm ref="RefundForm" @handleSubmit="handleRefresh" />
<InvoiceModal ref="InvoiceModal" />
</a-spin>
</a-card>
</template>
@@ -312,7 +358,9 @@ import {
OilStatusEnum,
UseStatusEnum
} from '@/common/enum/order'
import { DeliveryForm, CancelForm, CancelShareForm, ShareForm, PayForm } from './modules'
import { DeliveryForm, CancelForm, CancelShareForm } from './modules'
// 企油通的发放/加油/退款/发票与合作商订单完全同构,组件和接口都直接复用
import { OilForm, UseForm, ShareForm, PayForm, RefundForm, InvoiceModal } from '@/views/partners/order/modules'
// 表格字段
const columns = [
@@ -330,9 +378,24 @@ const columns = [
{
title: '操作',
dataIndex: 'action',
width: '180px',
width: '220px',
scopedSlots: { customRender: 'action' }
},
{
title: '司机',
align: 'center',
scopedSlots: { customRender: 'driver' }
},
{
title: '企油通单号',
align: 'center',
scopedSlots: { customRender: 'qyt' }
},
{
title: '加油信息',
align: 'center',
scopedSlots: { customRender: 'consume' }
},
{
title: '实付款',
align: 'center',
@@ -407,7 +470,11 @@ export default {
CancelForm,
CancelShareForm,
ShareForm,
PayForm
PayForm,
OilForm,
UseForm,
RefundForm,
InvoiceModal
},
data () {
return {
@@ -565,14 +632,68 @@ export default {
handleCancelShare (record) {
this.$refs.CancelShareForm.show(record)
},
// 手动分油
// ================================================================
// 企油通:发放 / 加油 / 退款 / 发票
// 这些操作的对象是订单商品行上挂的发放单(goodsItm.qyt,即 partners_order 记录),
// 调的接口与合作商订单页是同一套 /partners.order/*
// ================================================================
// 重新发放(仅「发放失败」可用;会重新扣减下单用户余额)
handleShare (record) {
this.$refs.ShareForm.show(record)
},
// 付款码
// 加油链接(企油通 7.15 免登 H5)
handlePay (record) {
this.$refs.PayForm.show(record)
},
// 重推发放结果(小程序单没有下游平台,等于把状态重新同步到用户端)
handleOil (record) {
this.$refs.OilForm.show(record)
},
// 重推加油结果
handleUse (record) {
this.$refs.UseForm.show(record)
},
// 退款
handleRefund (record) {
this.$refs.RefundForm.show(record)
},
// 企业发票(企油通 7.14)
handleInvoice (record) {
this.$refs.InvoiceModal.show(record)
},
// 企油通发放态文案 / 颜色
qytText (v) {
return { 0: '未提交', 1: '发放中', 2: '发放成功', 3: '发放失败' }[v] || '未知'
},
qytColor (v) {
return { 1: 'blue', 2: 'green', 3: 'red' }[v] || ''
},
// 退款状态文案 / 颜色
refundText (v) {
return { 0: '未退款', 1: '退款中', 2: '已退款', 3: '退款失败', 4: '待人工确认' }[v] || '未知'
},
refundColor (v) {
return { 1: 'blue', 2: 'green', 3: 'red', 4: 'orange' }[v] || ''
},
// 发放成功才可能退款;已经有退款记录的单总是可以打开看流水
canRefund (item) {
if (item.oilCardType !== 'zsy_ticket' || item.oil_status_zsy !== 2 || item.oil_status !== 1) {
return false
}
return item.refund_status > 0 || Number(this.remainAmount(item)) > 0
},
// 剩余未加油金额:发放金额 − 已加油 −(已退款时)退款金额
remainAmount (item) {
const refunded = item.refund_status === 2 ? Number(item.refund_amount || 0) : 0
const remain = Number(item.total_price || 0) - Number(item.used_amount || 0) - refunded
return Math.max(0, remain).toFixed(2)
},
refundLabel (item) {
return { 2: '退款记录', 4: '确认退款' }[item.refund_status] || '退款'
},
formatTime (timestamp) {
const date = new Date(timestamp)
const year = date.getFullYear()
@@ -649,4 +770,15 @@ export default {
font-size: 20px;
font-weight: 500;
}
// 操作栏:按钮较多会换行,横向纵向都留出间距(覆盖全局 .actions>a 的 8px 右边距)
.actions {
display: flex;
flex-wrap: wrap;
gap: 8px 16px;
& > a {
margin-right: 0 !important;
white-space: nowrap;
}
}
</style>