完善支付单创建方式链路

This commit is contained in:
2026-06-06 15:25:16 +08:00
parent 07abf2abca
commit 1811abc794
5 changed files with 207 additions and 57 deletions
@@ -1096,6 +1096,11 @@
<el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag> <el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="方式" min-width="120" show-overflow-tooltip>
<template #default="{ row }">
{{ formatPayOrderSource(row) }}
</template>
</el-table-column>
<el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip /> <el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip />
<el-table-column label="创建时间" min-width="136"> <el-table-column label="创建时间" min-width="136">
<template #default="{ row }"> <template #default="{ row }">
@@ -1154,6 +1159,11 @@
<el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag> <el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="方式" min-width="120" show-overflow-tooltip>
<template #default="{ row }">
{{ formatPayOrderSource(row) }}
</template>
</el-table-column>
<el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip /> <el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip />
<el-table-column label="创建时间" min-width="136"> <el-table-column label="创建时间" min-width="136">
<template #default="{ row }"> <template #default="{ row }">
@@ -1772,7 +1782,7 @@
<el-option <el-option
v-for="o in editPaidOrders" v-for="o in editPaidOrders"
:key="o.id" :key="o.id"
:label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)}`" :label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)} · ${formatPayOrderSource(o)}`"
:value="o.id" :value="o.id"
class="!h-auto py-1.5" class="!h-auto py-1.5"
> >
@@ -1782,7 +1792,7 @@
<span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span> <span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span>
</div> </div>
<div class="flex items-center justify-between text-xs text-gray-400 mt-1"> <div class="flex items-center justify-between text-xs text-gray-400 mt-1">
<span class="truncate pr-2">{{ formatPoCategory(o.order_type) }}<template v-if="o.remark"> · {{ o.remark }}</template></span> <span class="truncate pr-2">{{ formatPoCategory(o.order_type) }} · {{ formatPayOrderSource(o) }}<template v-if="o.remark"> · {{ o.remark }}</template></span>
<span class="shrink-0">{{ String(o.create_time || '').substring(0, 16) }}</span> <span class="shrink-0">{{ String(o.create_time || '').substring(0, 16) }}</span>
</div> </div>
</div> </div>
@@ -2347,12 +2357,17 @@
<el-option <el-option
v-for="o in addPayOrderAvailableList" v-for="o in addPayOrderAvailableList"
:key="o.id" :key="o.id"
:label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)}`" :label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)} · ${formatPayOrderSource(o)}`"
:value="o.id" :value="o.id"
> >
<div class="flex items-center justify-between"> <div class="flex flex-col gap-0.5 py-0.5">
<span class="text-sm">{{ o.order_no }}</span> <div class="flex items-center justify-between">
<span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span> <span class="text-sm">{{ o.order_no }}</span>
<span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span>
</div>
<div class="text-xs text-gray-400">
{{ formatPoCategory(o.order_type) }} · {{ formatPayOrderSource(o) }}
</div>
</div> </div>
</el-option> </el-option>
</el-select> </el-select>
@@ -4641,7 +4656,7 @@ const editDiagnosisCreatorDeptBreadcrumbs = computed(() => {
.filter((segs) => segs.length > 0) .filter((segs) => segs.length > 0)
}) })
const editPaidOrders = ref<Array<{ id: number; order_no?: string; amount?: number | string; order_type?: number | string; remark?: string; create_time?: string }>>([]) const editPaidOrders = ref<Array<{ id: number; order_no?: string; amount?: number | string; order_type?: number | string; remark?: string; create_time?: string; payment_method?: string; create_type?: string }>>([])
const editPaidOrdersLoading = ref(false) const editPaidOrdersLoading = ref(false)
const editDepositMin = ref(0) const editDepositMin = ref(0)
@@ -4657,6 +4672,24 @@ function formatPoCategory(t: unknown) {
return m[Number(t)] || '未知' return m[Number(t)] || '未知'
} }
function formatPayOrderSource(row: { payment_method?: unknown; create_type?: unknown }) {
const createType = String(row?.create_type || '')
if (createType === 'wechat_work') return '企业微信对外收款'
if (createType === 'fubei') return '付呗'
const paymentMethod = String(row?.payment_method || '')
const methodMap: Record<string, string> = {
alipay: '支付宝',
wechat: '微信',
wechat_work: '企业微信',
fubei: '付呗',
manual: '手动确认到账'
}
if (paymentMethod && methodMap[paymentMethod]) {
return methodMap[paymentMethod]
}
return '普通订单'
}
const editLinkedPaidTotal = computed(() => { const editLinkedPaidTotal = computed(() => {
const ids = new Set(editForm.pay_order_ids.map((x) => Number(x))) const ids = new Set(editForm.pay_order_ids.map((x) => Number(x)))
let s = 0 let s = 0
@@ -962,6 +962,11 @@
<el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag> <el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="方式" min-width="120" show-overflow-tooltip>
<template #default="{ row }">
{{ formatPayOrderSource(row) }}
</template>
</el-table-column>
<el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip /> <el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip />
<el-table-column label="创建时间" min-width="136"> <el-table-column label="创建时间" min-width="136">
<template #default="{ row }"> <template #default="{ row }">
@@ -1020,6 +1025,11 @@
<el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag> <el-tag v-if="row.is_exempt === 1" type="warning" size="small" class="ml-1">豁免</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="方式" min-width="120" show-overflow-tooltip>
<template #default="{ row }">
{{ formatPayOrderSource(row) }}
</template>
</el-table-column>
<el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip /> <el-table-column prop="creator_name" label="创建人" width="80" show-overflow-tooltip />
<el-table-column label="创建时间" min-width="136"> <el-table-column label="创建时间" min-width="136">
<template #default="{ row }"> <template #default="{ row }">
@@ -1555,7 +1565,7 @@
<el-option <el-option
v-for="o in editPaidOrders" v-for="o in editPaidOrders"
:key="o.id" :key="o.id"
:label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)}`" :label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)} · ${formatPayOrderSource(o)}`"
:value="o.id" :value="o.id"
class="!h-auto py-1.5" class="!h-auto py-1.5"
> >
@@ -1565,7 +1575,7 @@
<span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span> <span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span>
</div> </div>
<div class="flex items-center justify-between text-xs text-gray-400 mt-1"> <div class="flex items-center justify-between text-xs text-gray-400 mt-1">
<span class="truncate pr-2">{{ formatPoCategory(o.order_type) }}<template v-if="o.remark"> · {{ o.remark }}</template></span> <span class="truncate pr-2">{{ formatPoCategory(o.order_type) }} · {{ formatPayOrderSource(o) }}<template v-if="o.remark"> · {{ o.remark }}</template></span>
<span class="shrink-0">{{ String(o.create_time || '').substring(0, 16) }}</span> <span class="shrink-0">{{ String(o.create_time || '').substring(0, 16) }}</span>
</div> </div>
</div> </div>
@@ -1971,7 +1981,7 @@
@closed="addPayOrderFormRef?.clearValidate()" @closed="addPayOrderFormRef?.clearValidate()"
> >
<el-alert <el-alert
title="可以通过付呗创建新支付单,或关联已存在但未绑定的支付单。" :title="addPayOrderAlertTitle"
type="info" type="info"
:closable="false" :closable="false"
show-icon show-icon
@@ -1989,6 +1999,7 @@
<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-group> </el-radio-group>
</el-form-item> </el-form-item>
@@ -2028,6 +2039,20 @@
</el-form-item> </el-form-item>
</template> </template>
<!-- 直接完单申请不创建/关联支付单 -->
<template v-else-if="addPayOrderForm.add_mode === 'completion_only'">
<el-alert
type="warning"
:closable="false"
show-icon
class="!mb-0"
>
<template #title>
不新增或关联支付单仅向审核人员提交完成订单申请提交后支付审核将变为待审核审核通过后将自动结案
</template>
</el-alert>
</template>
<!-- 关联已有模式 --> <!-- 关联已有模式 -->
<template v-else> <template v-else>
<el-form-item label="选择支付单" prop="link_pay_order_id"> <el-form-item label="选择支付单" prop="link_pay_order_id">
@@ -2043,12 +2068,17 @@
<el-option <el-option
v-for="o in addPayOrderAvailableList" v-for="o in addPayOrderAvailableList"
:key="o.id" :key="o.id"
:label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)}`" :label="`${o.order_no} · ¥${o.amount} · ${formatPoCategory(o.order_type)} · ${formatPayOrderSource(o)}`"
:value="o.id" :value="o.id"
> >
<div class="flex items-center justify-between"> <div class="flex flex-col gap-0.5 py-0.5">
<span class="text-sm">{{ o.order_no }}</span> <div class="flex items-center justify-between">
<span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span> <span class="text-sm">{{ o.order_no }}</span>
<span class="text-orange-500 font-medium ml-4">¥{{ o.amount }}</span>
</div>
<div class="text-xs text-gray-400">
{{ formatPoCategory(o.order_type) }} · {{ formatPayOrderSource(o) }}
</div>
</div> </div>
</el-option> </el-option>
</el-select> </el-select>
@@ -2059,7 +2089,7 @@
</template> </template>
<!-- 完单申请选项 --> <!-- 完单申请选项 -->
<el-form-item label="完单申请"> <el-form-item v-if="addPayOrderForm.add_mode !== 'completion_only'" label="完单申请">
<el-radio-group v-model="addPayOrderForm.completion_request"> <el-radio-group v-model="addPayOrderForm.completion_request">
<el-radio :value="0">不申请</el-radio> <el-radio :value="0">不申请</el-radio>
<el-radio :value="1">申请完成订单</el-radio> <el-radio :value="1">申请完成订单</el-radio>
@@ -2528,6 +2558,7 @@ import {
prescriptionOrderRevokePayAudit, prescriptionOrderRevokePayAudit,
prescriptionOrderPatchPrescriptionPatient, prescriptionOrderPatchPrescriptionPatient,
prescriptionOrderLinkPayOrder, prescriptionOrderLinkPayOrder,
prescriptionOrderRequestCompletion,
prescriptionOrderSubmitGancaoRecipel, prescriptionOrderSubmitGancaoRecipel,
prescriptionOrderPreviewGancaoRecipel, prescriptionOrderPreviewGancaoRecipel,
prescriptionDetail, prescriptionDetail,
@@ -4042,7 +4073,7 @@ const editDiagnosisCreatorDeptBreadcrumbs = computed(() => {
.filter((segs) => segs.length > 0) .filter((segs) => segs.length > 0)
}) })
const editPaidOrders = ref<Array<{ id: number; order_no?: string; amount?: number | string; order_type?: number | string; remark?: string; create_time?: string }>>([]) const editPaidOrders = ref<Array<{ id: number; order_no?: string; amount?: number | string; order_type?: number | string; remark?: string; create_time?: string; payment_method?: string; create_type?: string }>>([])
const editPaidOrdersLoading = ref(false) const editPaidOrdersLoading = ref(false)
const editDepositMin = ref(0) const editDepositMin = ref(0)
@@ -4058,6 +4089,24 @@ function formatPoCategory(t: unknown) {
return m[Number(t)] || '未知' return m[Number(t)] || '未知'
} }
function formatPayOrderSource(row: { payment_method?: unknown; create_type?: unknown }) {
const createType = String(row?.create_type || '')
if (createType === 'wechat_work') return '企业微信对外收款'
if (createType === 'fubei') return '付呗'
const paymentMethod = String(row?.payment_method || '')
const methodMap: Record<string, string> = {
alipay: '支付宝',
wechat: '微信',
wechat_work: '企业微信',
fubei: '付呗',
manual: '手动确认到账'
}
if (paymentMethod && methodMap[paymentMethod]) {
return methodMap[paymentMethod]
}
return '普通订单'
}
const editLinkedPaidTotal = computed(() => { const editLinkedPaidTotal = computed(() => {
const ids = new Set(editForm.pay_order_ids.map((x) => Number(x))) const ids = new Set(editForm.pay_order_ids.map((x) => Number(x)))
let s = 0 let s = 0
@@ -4899,8 +4948,14 @@ const addPayOrderRowId = ref(0)
const addPayOrderFormRef = ref<FormInstance>() const addPayOrderFormRef = ref<FormInstance>()
const addPayOrderAvailableLoading = ref(false) const addPayOrderAvailableLoading = ref(false)
const addPayOrderAvailableList = ref<any[]>([]) const addPayOrderAvailableList = ref<any[]>([])
const addPayOrderAlertTitle = computed(() => {
if (addPayOrderForm.add_mode === 'completion_only') {
return '不创建或关联支付单,仅提交完单申请,由审核人员在支付审核时处理。'
}
return '可以通过付呗创建新支付单,或关联已存在但未绑定的支付单。'
})
const addPayOrderForm = reactive({ const addPayOrderForm = reactive({
add_mode: 'create' as 'create' | 'link', add_mode: 'create' as 'create' | 'link' | 'completion_only',
order_type: 3, order_type: 3,
pay_amount: undefined as number | undefined, pay_amount: undefined as number | undefined,
pay_remark: '', pay_remark: '',
@@ -4908,38 +4963,44 @@ const addPayOrderForm = reactive({
completion_request: 0 completion_request: 0
}) })
const addPayOrderRules: FormRules = { const addPayOrderRules = computed<FormRules>(() => {
add_mode: [{ required: true, message: '请选择添加方式', trigger: 'change' }], const rules: FormRules = {
order_type: [{ required: true, message: '请选择费用类别', trigger: 'change' }], add_mode: [{ required: true, message: '请选择添加方式', trigger: 'change' }]
pay_amount: [ }
{ required: true, message: '请输入支付金额', trigger: 'blur' }, if (addPayOrderForm.add_mode === 'create') {
{ rules.order_type = [{ required: true, message: '请选择费用类别', trigger: 'change' }]
validator: (_rule, v, cb) => { rules.pay_amount = [
const n = Number(v) { required: true, message: '请输入支付金额', trigger: 'blur' },
if (!Number.isFinite(n) || n <= 0) { {
cb(new Error('金额须大于 0')) validator: (_rule, v, cb) => {
} else { const n = Number(v)
cb() if (!Number.isFinite(n) || n <= 0) {
} cb(new Error('金额须大于 0'))
}, } else {
trigger: 'blur' cb()
} }
], },
link_pay_order_ids: [ trigger: 'blur'
{ }
required: true, ]
message: '请至少选择一个支付单', } else if (addPayOrderForm.add_mode === 'link') {
trigger: 'change', rules.link_pay_order_ids = [
validator: (_rule, v, cb) => { {
if (!Array.isArray(v) || v.length === 0) { required: true,
cb(new Error('请至少选择一个支付单')) message: '请至少选择一个支付单',
} else { trigger: 'change',
cb() validator: (_rule, v, cb) => {
if (!Array.isArray(v) || v.length === 0) {
cb(new Error('请至少选择一个支付单'))
} else {
cb()
}
} }
} }
} ]
] }
} return rules
})
async function loadAddPayOrderAvailable(diagnosisId: number, currentLinkedIds: number[] = []) { async function loadAddPayOrderAvailable(diagnosisId: number, currentLinkedIds: number[] = []) {
if (!diagnosisId) { if (!diagnosisId) {
@@ -4987,7 +5048,10 @@ async function submitAddPayOrder() {
await addPayOrderFormRef.value.validate() await addPayOrderFormRef.value.validate()
addPayOrderSaving.value = true addPayOrderSaving.value = true
try { try {
if (addPayOrderForm.add_mode === 'create') { if (addPayOrderForm.add_mode === 'completion_only') {
await prescriptionOrderRequestCompletion({ id: addPayOrderRowId.value })
feedback.msgSuccess('完单申请已提交,请等待支付审核')
} else if (addPayOrderForm.add_mode === 'create') {
// //
await prescriptionOrderAddPayOrder({ await prescriptionOrderAddPayOrder({
id: addPayOrderRowId.value, id: addPayOrderRowId.value,
+6
View File
@@ -1257,6 +1257,12 @@ const getCreateTypeText = (row: any) => {
fubei: '付呗' fubei: '付呗'
} }
const ct = row?.create_type const ct = row?.create_type
if (ct === 'wechat_work' || ct === 'fubei') {
return createTypeMap[ct]
}
if (ct === 'normal' && row?.payment_method) {
return getPaymentMethodText(row.payment_method)
}
if (ct && createTypeMap[ct]) { if (ct && createTypeMap[ct]) {
return createTypeMap[ct] return createTypeMap[ct]
} }
+49 -6
View File
@@ -22,6 +22,11 @@ use think\facade\Log;
*/ */
class OrderLogic class OrderLogic
{ {
/**
* 创建方式统一三值:normal 普通订单 / wechat_work 企业微信对外收款 / fubei 付呗
*/
private const CREATE_TYPES = ['normal', 'wechat_work', 'fubei'];
/** /**
* @notes 生成订单号 * @notes 生成订单号
* @return string * @return string
@@ -31,6 +36,34 @@ class OrderLogic
return 'ORD' . date('YmdHis') . mt_rand(100000, 999999); return 'ORD' . date('YmdHis') . mt_rand(100000, 999999);
} }
private static function normalizeCreateType(
?string $createType,
?string $paymentMethod = null,
?string $payeeUserid = null,
?string $payerExternalUserid = null,
?string $remark = null
): string {
$raw = trim((string) $createType);
if (in_array($raw, self::CREATE_TYPES, true)) {
return $raw;
}
$paymentMethod = trim((string) $paymentMethod);
if ($paymentMethod === 'fubei') {
return 'fubei';
}
if (
trim((string) $payeeUserid) !== ''
|| trim((string) $payerExternalUserid) !== ''
|| str_contains((string) $remark, '企业微信')
) {
return 'wechat_work';
}
return 'normal';
}
/** /**
* @notes 创建订单 * @notes 创建订单
* @param array $params * @param array $params
@@ -43,11 +76,8 @@ 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 $paymentMethod = $channel === 'fubei' ? 'fubei' : null;
$createType = (string)($params['create_type'] ?? 'normal'); $createType = self::normalizeCreateType((string)($params['create_type'] ?? ''), $paymentMethod);
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();
@@ -189,6 +219,10 @@ class OrderLogic
$order->payment_method = 'wechat'; $order->payment_method = 'wechat';
$needSave = true; $needSave = true;
} }
if ((string) ($order->create_type ?? '') !== 'wechat_work') {
$order->create_type = 'wechat_work';
$needSave = true;
}
if ($paymentTimeStr !== '' && (string)$order->payment_time !== $paymentTimeStr) { if ($paymentTimeStr !== '' && (string)$order->payment_time !== $paymentTimeStr) {
$order->payment_time = $paymentTimeStr; $order->payment_time = $paymentTimeStr;
$needSave = true; $needSave = true;
@@ -241,6 +275,7 @@ class OrderLogic
$order->amount = $amount; $order->amount = $amount;
$order->status = $targetStatus; $order->status = $targetStatus;
$order->payment_method = 'wechat'; $order->payment_method = 'wechat';
$order->create_type = 'wechat_work';
$order->payment_time = $paymentTimeStr; $order->payment_time = $paymentTimeStr;
$order->trade_no = $tradeNo; $order->trade_no = $tradeNo;
$remark = '企业微信直接收款同步,待关联患者'; $remark = '企业微信直接收款同步,待关联患者';
@@ -289,6 +324,7 @@ class OrderLogic
$order->amount = $amount; $order->amount = $amount;
$order->status = 2; // 已支付 $order->status = 2; // 已支付
$order->payment_method = 'wechat'; $order->payment_method = 'wechat';
$order->create_type = 'wechat_work';
$order->payment_time = date('Y-m-d H:i:s'); $order->payment_time = date('Y-m-d H:i:s');
$order->trade_no = $tradeNo; $order->trade_no = $tradeNo;
$order->remark = '企业微信直接收款,待关联患者'; $order->remark = '企业微信直接收款,待关联患者';
@@ -542,6 +578,13 @@ class OrderLogic
$n->creator_id = $order->creator_id; $n->creator_id = $order->creator_id;
$n->order_type = (int) $typeList[$i]; $n->order_type = (int) $typeList[$i];
$n->amount = $amt; $n->amount = $amt;
$n->create_type = self::normalizeCreateType(
(string) ($order->create_type ?? ''),
(string) ($order->payment_method ?? ''),
(string) ($order->payee_userid ?? ''),
(string) ($order->payer_external_userid ?? ''),
(string) ($order->remark ?? '')
);
if ($st === 5) { if ($st === 5) {
$n->payment_method = 'fubei'; $n->payment_method = 'fubei';
$n->status = 5; $n->status = 5;
@@ -1219,7 +1262,7 @@ class OrderLogic
} }
$rows = $q $rows = $q
->field(['id', 'order_no', 'order_type', 'amount', 'status', 'create_time', 'creator_id', 'remark', 'is_exempt']) ->field(['id', 'order_no', 'order_type', 'amount', 'status', 'create_time', 'creator_id', 'remark', 'is_exempt', 'payment_method', 'create_type'])
->order('id', 'desc') ->order('id', 'desc')
->select() ->select()
->toArray(); ->toArray();
@@ -770,7 +770,7 @@ class PrescriptionOrderLogic
return []; return [];
} }
$rows = Order::whereIn('id', $ids)->whereNull('delete_time') $rows = Order::whereIn('id', $ids)->whereNull('delete_time')
->field(['id', 'order_no', 'order_type', 'amount', 'status', 'create_time', 'creator_id', 'remark', 'is_exempt']) ->field(['id', 'order_no', 'order_type', 'amount', 'status', 'create_time', 'creator_id', 'remark', 'is_exempt', 'payment_method', 'create_type'])
->order('id', 'asc') ->order('id', 'asc')
->whereIn('status', [2, 4, 5]) ->whereIn('status', [2, 4, 5])
->select() ->select()
@@ -2264,12 +2264,16 @@ class PrescriptionOrderLogic
$order->payment_slip_audit_remark = ''; $order->payment_slip_audit_remark = '';
self::syncFulfillmentStatus($order); self::syncFulfillmentStatus($order);
// 将关联的已支付支付单status=2,且payment_method='manual')恢复为待审核(status=5 // 将关联的已支付补齐支付单恢复为待审核:兼容旧 manual 与新 fubei/create_type=fubei 两种标记
$payOrderIds = self::linkedPayOrderIdList($id); $payOrderIds = self::linkedPayOrderIdList($id);
if (!empty($payOrderIds)) { if (!empty($payOrderIds)) {
Order::whereIn('id', $payOrderIds) Order::whereIn('id', $payOrderIds)
->where('status', 2) // 只恢复已支付状态的 ->where('status', 2) // 只恢复已支付状态的
->where('payment_method', 'manual') // 只恢复手动创建的 ->where(function ($query) {
$query->where('payment_method', 'manual')
->whereOr('payment_method', 'fubei')
->whereOr('create_type', 'fubei');
})
->update([ ->update([
'status' => 5, // 待审核 'status' => 5, // 待审核
'payment_time' => null 'payment_time' => null