This commit is contained in:
Your Name
2026-05-19 11:40:56 +08:00
parent a1392f9491
commit 9208e7eaaa
270 changed files with 447 additions and 314 deletions
+12 -1
View File
@@ -462,15 +462,26 @@ export function prescriptionOrderAddPayOrder(params: {
order_type: number
pay_amount: number
pay_remark?: string
completion_request?: number
}) {
return request.post({ url: '/tcm.prescriptionOrder/addPayOrder', params })
}
/** 为「已发货」订单关联已有支付单并重置支付审核为待审核 */
export function prescriptionOrderLinkPayOrder(params: { id: number; pay_order_id: number }) {
export function prescriptionOrderLinkPayOrder(params: {
id: number
pay_order_id?: number
pay_order_ids?: number[]
completion_request?: number
}) {
return request.post({ url: '/tcm.prescriptionOrder/linkPayOrder', params })
}
/** 已发货/已签收:仅提交完单申请(不新增/关联支付单) */
export function prescriptionOrderRequestCompletion(params: { id: number }) {
return request.post({ url: '/tcm.prescriptionOrder/requestCompletion', params })
}
/** 将「已发货/已签收」且支付审核通过的订单结案(3=已完成 或 7-12 业务状态) */
export function prescriptionOrderComplete(params: { id: number; fulfillment_status: number }) {
return request.post({ url: '/tcm.prescriptionOrder/complete', params })
@@ -2052,7 +2052,7 @@
@closed="addPayOrderFormRef?.clearValidate()"
>
<el-alert
title="可以手动创建新支付单,或关联已存在但未绑定的支付单。"
:title="addPayOrderAlertTitle"
type="info"
:closable="false"
show-icon
@@ -2070,6 +2070,7 @@
<el-radio-group v-model="addPayOrderForm.add_mode">
<el-radio value="create">手动创建</el-radio>
<el-radio value="link">关联已有</el-radio>
<el-radio value="completion_only">直接完单申请</el-radio>
</el-radio-group>
</el-form-item>
@@ -2090,11 +2091,11 @@
<el-form-item label="支付金额" prop="pay_amount">
<el-input-number
v-model="addPayOrderForm.pay_amount"
:min="0.01"
:min="0"
:step="0.01"
:precision="2"
class="w-full"
placeholder="请输入支付金额(元)"
placeholder="请输入支付金额(元,可为 0"
/>
</el-form-item>
<el-form-item label="备注" prop="pay_remark">
@@ -2109,6 +2110,20 @@
</el-form-item>
</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>
<el-form-item label="选择支付单" prop="link_pay_order_id">
@@ -2139,8 +2154,8 @@
</el-form-item>
</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 :value="0">不申请</el-radio>
<el-radio :value="1">申请完成订单</el-radio>
@@ -2152,7 +2167,13 @@
</el-form>
<template #footer>
<el-button @click="addPayOrderVisible = false">取消</el-button>
<el-button type="primary" :loading="addPayOrderSaving" @click="submitAddPayOrder">确认新增</el-button>
<el-button
type="primary"
:loading="addPayOrderSaving"
@click="submitAddPayOrder"
>
{{ addPayOrderForm.add_mode === 'completion_only' ? '提交申请' : '确认新增' }}
</el-button>
</template>
</el-dialog>
@@ -2597,6 +2618,7 @@ import {
prescriptionOrderUpdateAmount,
prescriptionOrderSetShipMode,
prescriptionOrderAddPayOrder,
prescriptionOrderRequestCompletion,
prescriptionOrderComplete,
prescriptionOrderRevokeRxAudit,
prescriptionOrderRevokePayAudit,
@@ -3811,6 +3833,8 @@ function logActionText(act: string) {
ship: '确认发货',
withdraw: '撤销',
link_pay_order: '关联支付单',
completion_request: '完单申请',
auto_complete: '自动完成',
revoke_rx_audit: '撤回处方审核',
revoke_pay_audit: '撤回支付审核',
gancao_submit: '甘草下单',
@@ -4966,8 +4990,15 @@ const addPayOrderRowId = ref(0)
const addPayOrderFormRef = ref<FormInstance>()
const addPayOrderAvailableLoading = ref(false)
const addPayOrderAvailableList = ref<any[]>([])
const addPayOrderAlertTitle = computed(() => {
if (addPayOrderForm.add_mode === 'completion_only') {
return '不创建或关联支付单,仅提交完单申请,由审核人员在支付审核时处理。'
}
return '可以手动创建新支付单,或关联已存在但未绑定的支付单。'
})
const addPayOrderForm = reactive({
add_mode: 'create' as 'create' | 'link',
add_mode: 'create' as 'create' | 'link' | 'completion_only',
order_type: 3,
pay_amount: undefined as number | undefined,
pay_remark: '',
@@ -4975,38 +5006,47 @@ const addPayOrderForm = reactive({
completion_request: 0
})
const addPayOrderRules: FormRules = {
add_mode: [{ required: true, message: '请选择添加方式', trigger: 'change' }],
order_type: [{ required: true, message: '请选择费用类别', trigger: 'change' }],
pay_amount: [
{ required: true, message: '请输入支付金额', trigger: 'blur' },
{
validator: (_rule, v, cb) => {
const n = Number(v)
if (!Number.isFinite(n) || n <= 0) {
cb(new Error('金额须大于 0'))
} else {
cb()
}
},
trigger: 'blur'
}
],
link_pay_order_ids: [
{
required: true,
message: '请至少选择一个支付单',
trigger: 'change',
validator: (_rule, v, cb) => {
if (!Array.isArray(v) || v.length === 0) {
cb(new Error('请至少选择一个支付单'))
} else {
cb()
const addPayOrderRules = computed<FormRules>(() => {
const rules: FormRules = {
add_mode: [{ required: true, message: '请选择添加方式', trigger: 'change' }]
}
if (addPayOrderForm.add_mode === 'create') {
rules.order_type = [{ required: true, message: '请选择费用类别', trigger: 'change' }]
rules.pay_amount = [
{
validator: (_rule, v, cb) => {
if (v === undefined || v === null || v === '') {
cb(new Error('请输入支付金额'))
return
}
const n = Number(v)
if (!Number.isFinite(n) || n < 0) {
cb(new Error('金额不能小于 0'))
} else {
cb()
}
},
trigger: 'blur'
}
]
} else if (addPayOrderForm.add_mode === 'link') {
rules.link_pay_order_ids = [
{
required: true,
message: '请至少选择一个支付单',
trigger: 'change',
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[] = []) {
if (!diagnosisId) {
@@ -5054,7 +5094,10 @@ async function submitAddPayOrder() {
await addPayOrderFormRef.value.validate()
addPayOrderSaving.value = true
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({
id: addPayOrderRowId.value,