fix:订单列表详情实付金额代理/企业不可见
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m22s

This commit is contained in:
sexygoat
2026-06-01 14:10:09 +08:00
parent e563b81b6e
commit 3e6b3981f4
6 changed files with 397 additions and 338 deletions

View File

@@ -60,7 +60,7 @@
</template>
<script setup lang="ts">
import { h, onMounted, ref } from 'vue'
import { h, onMounted, ref, computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { ElButton, ElCard, ElIcon, ElImage, ElMessage, ElTable, ElTableColumn } from 'element-plus'
import { ArrowLeft, Loading } from '@element-plus/icons-vue'
@@ -75,6 +75,7 @@
OrderPaymentMethod
} from '@/types/api'
import { useAuth } from '@/composables/useAuth'
import { useUserStore } from '@/store/modules/user'
import { formatDateTime } from '@/utils/business/format'
defineOptions({ name: 'OrderDetail' })
@@ -82,6 +83,7 @@
const route = useRoute()
const router = useRouter()
const { hasAuth } = useAuth()
const userStore = useUserStore()
const loading = ref(false)
const detailData = ref<Order | null>(null)
@@ -174,163 +176,181 @@
}
}
// 检查当前用户是否可以查看实付金额(代理账号和企业账号不能看到)
const canViewActualPaidAmount = computed(() => {
const userType = userStore.info.user_type
// 只有代理账号(3)和企业账号(4)不能看到实付金额
return userType !== 3 && userType !== 4
})
// 详情页配置
const detailSections: DetailSection[] = [
{
title: '基本信息',
fields: [
{ label: '订单号', prop: 'order_no' },
{
label: '订单类型',
formatter: (_, data) => getOrderTypeText(data.order_type)
},
{
label: '支付状态',
formatter: (_, data) => data.payment_status_text || '-'
},
{
label: '订单金额',
prop: 'total_amount',
formatter: (value) => formatCurrency(value)
},
{
label: '实付金额',
prop: 'actual_paid_amount',
formatter: (value) =>
value !== undefined && value !== null ? formatCurrency(value) : '-'
},
{
label: '支付凭证',
fullWidth: true,
render: (data) => {
if (!data.payment_voucher_key || !hasAuth('orders:view_payment_voucher')) {
return h('span', '-')
}
const detailSections = computed<DetailSection[]>(() => {
const baseFields = [
{ label: '订单号', prop: 'order_no' },
{
label: '订单类型',
formatter: (_, data) => getOrderTypeText(data.order_type)
},
{
label: '支付状态',
formatter: (_, data) => data.payment_status_text || '-'
},
{
label: '订单金额',
prop: 'total_amount',
formatter: (value) => formatCurrency(value)
}
]
if (!paymentVoucherUrl.value) {
return h('span', '加载中...')
}
return h(ElImage, {
src: paymentVoucherUrl.value,
previewSrcList: [paymentVoucherUrl.value],
fit: 'cover',
style: {
width: '120px',
height: '120px',
borderRadius: '8px',
border: '1px solid var(--el-border-color-light)'
}
})
}
},
{
label: '买家类型',
formatter: (_, data) => (data.buyer_type ? getBuyerTypeText(data.buyer_type) : '-')
},
{
label: '买家手机号',
prop: 'buyer_phone',
formatter: (value) => value || '-'
},
{
label: '买家昵称',
prop: 'buyer_nickname',
formatter: (value) => value || '-'
},
{
label: '订单渠道',
formatter: (_, data) =>
data.purchase_role ? getPurchaseRoleText(data.purchase_role) : '-'
},
{
label: '购买备注',
prop: 'purchase_remark',
formatter: (value) => value || '-'
},
{
label: '支付时间',
prop: 'paid_at',
formatter: (value) => (value ? formatDateTime(value) : '-')
},
{
label: '是否上级代购',
formatter: (_, data) => (data.is_purchased_by_parent ? '是' : '否')
},
{
label: 'ICCID/VirtualNo',
prop: 'asset_identifier',
formatter: (value) => value || '-'
},
{
label: '是否超时',
formatter: (_, data) => {
if (data.is_expired === undefined || data.is_expired === null) return '-'
return data.is_expired ? '是' : '否'
}
},
{
label: '超时时间',
prop: 'expires_at',
formatter: (value) => (value ? formatDateTime(value) : '-')
},
{
label: '创建时间',
prop: 'created_at',
formatter: (value) => formatDateTime(value)
},
{
label: '更新时间',
prop: 'updated_at',
formatter: (value) => formatDateTime(value)
}
]
},
{
title: '操作者信息',
fields: [
{
label: '操作者类型',
prop: 'operator_type',
formatter: (value) => getOperatorTypeText(value)
},
{
label: '操作者名称',
prop: 'operator_name',
formatter: (value) => value || '-'
}
]
},
{
title: '业务归属信息',
fields: [
{
label: '销售店铺名称',
prop: 'seller_shop_name',
formatter: (value) => value || '-'
}
]
},
{
title: '佣金信息',
fields: [
{
label: '流程状态',
formatter: (_, data) =>
getCommissionStatusText(data.commission_status, data.commission_status_name)
},
{
label: '业务结果',
formatter: (_, data) =>
getCommissionResultText(data.commission_result, data.commission_result_name)
},
{
label: '佣金配置版本',
prop: 'commission_config_version'
}
]
// 只有非代理账号和非企业账号才能看到实付金额字段
if (canViewActualPaidAmount.value) {
baseFields.push({
label: '实付金额',
prop: 'actual_paid_amount',
formatter: (value) =>
value !== undefined && value !== null ? formatCurrency(value) : '-'
})
}
]
baseFields.push(
{
label: '支付凭证',
fullWidth: true,
render: (data) => {
if (!data.payment_voucher_key || !hasAuth('orders:view_payment_voucher')) {
return h('span', '-')
}
if (!paymentVoucherUrl.value) {
return h('span', '加载中...')
}
return h(ElImage, {
src: paymentVoucherUrl.value,
previewSrcList: [paymentVoucherUrl.value],
fit: 'cover',
style: {
width: '120px',
height: '120px',
borderRadius: '8px',
border: '1px solid var(--el-border-color-light)'
}
})
}
},
{
label: '买家类型',
formatter: (_, data) => (data.buyer_type ? getBuyerTypeText(data.buyer_type) : '-')
},
{
label: '买家手机号',
prop: 'buyer_phone',
formatter: (value) => value || '-'
},
{
label: '买家昵称',
prop: 'buyer_nickname',
formatter: (value) => value || '-'
},
{
label: '订单渠道',
formatter: (_, data) =>
data.purchase_role ? getPurchaseRoleText(data.purchase_role) : '-'
},
{
label: '购买备注',
prop: 'purchase_remark',
formatter: (value) => value || '-'
},
{
label: '支付时间',
prop: 'paid_at',
formatter: (value) => (value ? formatDateTime(value) : '-')
},
{
label: '是否上级代购',
formatter: (_, data) => (data.is_purchased_by_parent ? '是' : '否')
},
{
label: 'ICCID/VirtualNo',
prop: 'asset_identifier',
formatter: (value) => value || '-'
},
{
label: '是否超时',
formatter: (_, data) => {
if (data.is_expired === undefined || data.is_expired === null) return '-'
return data.is_expired ? '是' : '否'
}
},
{
label: '超时时间',
prop: 'expires_at',
formatter: (value) => (value ? formatDateTime(value) : '-')
},
{
label: '创建时间',
prop: 'created_at',
formatter: (value) => formatDateTime(value)
},
{
label: '更新时间',
prop: 'updated_at',
formatter: (value) => formatDateTime(value)
}
)
return [
{
title: '基本信息',
fields: baseFields
},
{
title: '操作者信息',
fields: [
{
label: '操作者类型',
prop: 'operator_type',
formatter: (value) => getOperatorTypeText(value)
},
{
label: '操作者名称',
prop: 'operator_name',
formatter: (value) => value || '-'
}
]
},
{
title: '业务归属信息',
fields: [
{
label: '销售店铺名称',
prop: 'seller_shop_name',
formatter: (value) => value || '-'
}
]
},
{
title: '佣金信息',
fields: [
{
label: '流程状态',
formatter: (_, data) =>
getCommissionStatusText(data.commission_status, data.commission_status_name)
},
{
label: '业务结果',
formatter: (_, data) =>
getCommissionResultText(data.commission_result, data.commission_result_name)
},
{
label: '佣金配置版本',
prop: 'commission_config_version'
}
]
}
]
})
// 返回上一页
const handleBack = () => {