支付方式完善

This commit is contained in:
2026-06-05 18:24:41 +08:00
parent c76bd5416a
commit 07abf2abca
7 changed files with 44 additions and 12 deletions
@@ -2276,13 +2276,13 @@
> >
<el-form-item label="添加方式" prop="add_mode"> <el-form-item label="添加方式" prop="add_mode">
<el-radio-group v-model="addPayOrderForm.add_mode"> <el-radio-group v-model="addPayOrderForm.add_mode">
<el-radio value="create">手动创建</el-radio> <el-radio value="create">付呗</el-radio>
<el-radio value="link">关联已有</el-radio> <el-radio value="link">关联已有</el-radio>
<el-radio value="completion_only">直接完单申请</el-radio> <el-radio value="completion_only">直接完单申请</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- 手动创建模式 --> <!-- 付呗手动创建支付单 -->
<template v-if="addPayOrderForm.add_mode === 'create'"> <template v-if="addPayOrderForm.add_mode === 'create'">
<el-form-item label="费用类别" prop="order_type"> <el-form-item label="费用类别" prop="order_type">
<el-select v-model="addPayOrderForm.order_type" class="w-full"> <el-select v-model="addPayOrderForm.order_type" class="w-full">
@@ -5650,7 +5650,7 @@ const addPayOrderAlertTitle = computed(() => {
if (addPayOrderForm.add_mode === 'completion_only') { if (addPayOrderForm.add_mode === 'completion_only') {
return '不创建或关联支付单,仅提交完单申请,由审核人员在支付审核时处理。' return '不创建或关联支付单,仅提交完单申请,由审核人员在支付审核时处理。'
} }
return '可以手动创建新支付单,或关联已存在但未绑定的支付单。' return '可以通过付呗创建新支付单,或关联已存在但未绑定的支付单。'
}) })
const addPayOrderForm = reactive({ const addPayOrderForm = reactive({
@@ -1971,7 +1971,7 @@
@closed="addPayOrderFormRef?.clearValidate()" @closed="addPayOrderFormRef?.clearValidate()"
> >
<el-alert <el-alert
title="可以手动创建新支付单,或关联已存在但未绑定的支付单。" title="可以通过付呗创建新支付单,或关联已存在但未绑定的支付单。"
type="info" type="info"
:closable="false" :closable="false"
show-icon show-icon
@@ -1987,12 +1987,12 @@
> >
<el-form-item label="添加方式" prop="add_mode"> <el-form-item label="添加方式" prop="add_mode">
<el-radio-group v-model="addPayOrderForm.add_mode"> <el-radio-group v-model="addPayOrderForm.add_mode">
<el-radio value="create">手动创建</el-radio> <el-radio value="create">付呗</el-radio>
<el-radio value="link">关联已有</el-radio> <el-radio value="link">关联已有</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- 手动创建模式 --> <!-- 付呗手动创建支付单 -->
<template v-if="addPayOrderForm.add_mode === 'create'"> <template v-if="addPayOrderForm.add_mode === 'create'">
<el-form-item label="费用类别" prop="order_type"> <el-form-item label="费用类别" prop="order_type">
<el-select v-model="addPayOrderForm.order_type" class="w-full"> <el-select v-model="addPayOrderForm.order_type" class="w-full">
+21 -5
View File
@@ -174,9 +174,9 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="支付方式" width="100"> <el-table-column label="支付方式" width="120">
<template #default="{ row }"> <template #default="{ row }">
{{ getPaymentMethodText(row.payment_method) }} {{ getCreateTypeText(row) }}
</template> </template>
</el-table-column> </el-table-column>
@@ -327,7 +327,7 @@
<span class="text-red-500 font-semibold">¥{{ detailData.amount }}</span> <span class="text-red-500 font-semibold">¥{{ detailData.amount }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="支付方式"> <el-descriptions-item label="支付方式">
{{ getPaymentMethodText(detailData.payment_method) }} {{ getCreateTypeText(detailData) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="支付时间"> <el-descriptions-item label="支付时间">
{{ detailData.payment_time || '-' }} {{ detailData.payment_time || '-' }}
@@ -1148,7 +1148,8 @@ const submitCreateOrder = async () => {
patient_id: createForm.patient_id, patient_id: createForm.patient_id,
order_type: createForm.order_type, order_type: createForm.order_type,
amount: createForm.amount, amount: createForm.amount,
remark: createForm.remark remark: createForm.remark,
create_type: 'wechat_work'
} }
const res: any = await orderCreateForWechatWork(params) const res: any = await orderCreateForWechatWork(params)
const orderNo = res?.order_no ?? res?.data?.order_no const orderNo = res?.order_no ?? res?.data?.order_no
@@ -1160,7 +1161,8 @@ const submitCreateOrder = async () => {
patient_id: createForm.patient_id, patient_id: createForm.patient_id,
order_type: createForm.order_type, order_type: createForm.order_type,
amount: createForm.amount, amount: createForm.amount,
remark: createForm.remark remark: createForm.remark,
create_type: createForm.createType
} }
if (createForm.createType === 'fubei') { if (createForm.createType === 'fubei') {
params.payment_channel = 'fubei' params.payment_channel = 'fubei'
@@ -1247,6 +1249,20 @@ const getPaymentMethodText = (method: string | null) => {
return methodMap[method] || '未知' return methodMap[method] || '未知'
} }
// 支付方式展示:优先按「创建方式」三值显示;历史单/无 create_type 时回退真实支付渠道文案
const getCreateTypeText = (row: any) => {
const createTypeMap: Record<string, string> = {
normal: '普通订单',
wechat_work: '企业微信对外收款',
fubei: '付呗'
}
const ct = row?.create_type
if (ct && createTypeMap[ct]) {
return createTypeMap[ct]
}
return getPaymentMethodText(row?.payment_method)
}
// 编辑订单 // 编辑订单
const handleEditOrder = (row: any) => { const handleEditOrder = (row: any) => {
editOrderForm.value = { editOrderForm.value = {
@@ -207,6 +207,11 @@ class OrderController extends BaseAdminController
$params['creator_id'] = $this->adminId; $params['creator_id'] = $this->adminId;
$params['payment_channel'] = (string)$this->request->post('payment_channel', 'normal'); $params['payment_channel'] = (string)$this->request->post('payment_channel', 'normal');
$params['require_payment_slip_audit'] = (int)$this->request->post('require_payment_slip_audit', 0); $params['require_payment_slip_audit'] = (int)$this->request->post('require_payment_slip_audit', 0);
// 创建方式:优先取前端透传的 create_type,否则按 payment_channel 派生(fubei→fubei,其余 normal
$createTypeReq = (string)$this->request->post('create_type', '');
$params['create_type'] = in_array($createTypeReq, ['normal', 'wechat_work', 'fubei'], true)
? $createTypeReq
: ($params['payment_channel'] === 'fubei' ? 'fubei' : 'normal');
$result = OrderLogic::create($params); $result = OrderLogic::create($params);
if (!$result) { if (!$result) {
@@ -227,6 +232,7 @@ class OrderController extends BaseAdminController
{ {
$params = (new OrderValidate())->post()->goCheck('create'); $params = (new OrderValidate())->post()->goCheck('create');
$params['creator_id'] = $this->adminId; $params['creator_id'] = $this->adminId;
$params['create_type'] = 'wechat_work';
$result = OrderLogic::createForWechatWork($params); $result = OrderLogic::createForWechatWork($params);
if (!$result) { if (!$result) {
@@ -43,6 +43,11 @@ class OrderLogic
if (!in_array($channel, ['normal', 'fubei'], true)) { if (!in_array($channel, ['normal', 'fubei'], true)) {
$channel = 'normal'; $channel = 'normal';
} }
// 创建方式(三值):normal 普通订单 / wechat_work 企业微信对外收款 / fubei 付呗;非法值兜底 normal
$createType = (string)($params['create_type'] ?? 'normal');
if (!in_array($createType, ['normal', 'wechat_work', 'fubei'], true)) {
$createType = 'normal';
}
$requirePaymentSlipAudit = (int)($params['require_payment_slip_audit'] ?? 0) === 1; $requirePaymentSlipAudit = (int)($params['require_payment_slip_audit'] ?? 0) === 1;
$order = new Order(); $order = new Order();
@@ -51,6 +56,7 @@ class OrderLogic
$order->creator_id = $params['creator_id']; $order->creator_id = $params['creator_id'];
$order->order_type = $params['order_type']; $order->order_type = $params['order_type'];
$order->amount = $params['amount']; $order->amount = $params['amount'];
$order->create_type = $createType;
// 付呗且申请审核支付单:待审核(5);否则待支付(1) // 付呗且申请审核支付单:待审核(5);否则待支付(1)
if ($channel === 'fubei') { if ($channel === 'fubei') {
$order->payment_method = 'fubei'; $order->payment_method = 'fubei';
@@ -2361,7 +2361,8 @@ class PrescriptionOrderLogic
$payOrder->order_type = $orderType; $payOrder->order_type = $orderType;
$payOrder->amount = $amount; $payOrder->amount = $amount;
$payOrder->status = 5; // 待审核 $payOrder->status = 5; // 待审核
$payOrder->payment_method = 'manual'; $payOrder->payment_method = 'fubei'; // 补齐支付单按「付呗」记账
$payOrder->create_type = 'fubei';
$payOrder->payment_time = null; // 审核通过后再设置支付时间 $payOrder->payment_time = null; // 审核通过后再设置支付时间
$payOrder->remark = $remark; $payOrder->remark = $remark;
@@ -0,0 +1,3 @@
-- 支付单:创建方式(统一为三值,用于支付方式显示)
ALTER TABLE `zyt_order`
ADD COLUMN `create_type` varchar(20) NOT NULL DEFAULT 'normal' COMMENT '创建方式:normal 普通订单 / wechat_work 企业微信对外收款 / fubei 付呗' AFTER `payment_method`;