更新bug
This commit is contained in:
@@ -482,11 +482,16 @@ export function prescriptionOrderRequestCompletion(params: { id: number }) {
|
||||
return request.post({ url: '/tcm.prescriptionOrder/requestCompletion', params })
|
||||
}
|
||||
|
||||
/** 将「已发货/已签收」且支付审核通过的订单结案(3=已完成 或 7-12 业务状态) */
|
||||
/** 将「已发货/已签收」且支付审核通过的订单结案(3=已完成 或 7-12 业务状态,不含退款) */
|
||||
export function prescriptionOrderComplete(params: { id: number; fulfillment_status: number }) {
|
||||
return request.post({ url: '/tcm.prescriptionOrder/complete', params })
|
||||
}
|
||||
|
||||
/** 业务订单退款(须填写原因;关联收款单标记已退款、已付总额清零) */
|
||||
export function prescriptionOrderRefund(params: { id: number; reason: string }) {
|
||||
return request.post({ url: '/tcm.prescriptionOrder/refund', params })
|
||||
}
|
||||
|
||||
/** 甘草药管家:中药处方下单(服务端 CTM_PREVIEW → CTM_SUBMIT_RECIPEL) */
|
||||
export function prescriptionOrderSubmitGancaoRecipel(params: { id: number }) {
|
||||
return request.post({ url: '/tcm.prescriptionOrder/submitGancaoRecipel', params })
|
||||
|
||||
@@ -530,6 +530,13 @@
|
||||
link
|
||||
@click="confirmComplete(row)"
|
||||
>完成订单</el-button>
|
||||
<el-button
|
||||
v-if="canRefundRow(row)"
|
||||
v-perms="['tcm.prescriptionOrder/refund']"
|
||||
type="danger"
|
||||
link
|
||||
@click="openRefundOrder(row)"
|
||||
>退款</el-button>
|
||||
<el-button
|
||||
v-if="canWithdrawRow(row)"
|
||||
v-perms="['tcm.prescriptionOrder/withdraw']"
|
||||
@@ -672,6 +679,16 @@
|
||||
>
|
||||
完成订单
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="canRefundRow(detailData)"
|
||||
v-perms="['tcm.prescriptionOrder/refund']"
|
||||
type="danger"
|
||||
size="small"
|
||||
plain
|
||||
@click="openRefundOrder(detailData)"
|
||||
>
|
||||
退款
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -2103,6 +2120,41 @@
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 订单退款:须填写原因 -->
|
||||
<el-dialog
|
||||
v-model="refundOrderDialogVisible"
|
||||
title="订单退款"
|
||||
width="480px"
|
||||
:close-on-click-modal="false"
|
||||
destroy-on-close
|
||||
@closed="onRefundOrderDialogClosed"
|
||||
>
|
||||
<el-alert
|
||||
type="warning"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="mb-4 !items-start"
|
||||
title="确认退款后,关联收款记录将全部标记为「已退款」,已付总额清零,且不可撤销。"
|
||||
/>
|
||||
<el-form ref="refundOrderFormRef" :model="refundOrderForm" :rules="refundOrderRules" label-width="88px">
|
||||
<el-form-item label="退款原因" prop="reason">
|
||||
<el-input
|
||||
v-model="refundOrderForm.reason"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
placeholder="请填写退款原因(必填)"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="refundOrderDialogVisible = false">取消</el-button>
|
||||
<el-button type="danger" :loading="refundOrderSubmitting" @click="submitRefundOrder">
|
||||
确认退款
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 补齐支付单 Dialog -->
|
||||
<el-dialog
|
||||
v-model="addPayOrderVisible"
|
||||
@@ -2727,6 +2779,7 @@ import {
|
||||
prescriptionOrderAddPayOrder,
|
||||
prescriptionOrderRequestCompletion,
|
||||
prescriptionOrderComplete,
|
||||
prescriptionOrderRefund,
|
||||
prescriptionOrderRevokeRxAudit,
|
||||
prescriptionOrderRevokePayAudit,
|
||||
prescriptionOrderPatchPrescriptionPatient,
|
||||
@@ -3686,6 +3739,10 @@ function canCompleteRow(row: { fulfillment_status?: number; payment_slip_audit_s
|
||||
return (fs === 5 || fs === 6) && Number(row.payment_slip_audit_status) === 1
|
||||
}
|
||||
|
||||
function canRefundRow(row: { fulfillment_status?: number; payment_slip_audit_status?: number }) {
|
||||
return canCompleteRow(row)
|
||||
}
|
||||
|
||||
function canQuickTrackRow(row: { fulfillment_status?: number }) {
|
||||
// 仅已发货(5) 可修改快递单号;已签收(6) 不可再改
|
||||
return Number(row.fulfillment_status) === 5
|
||||
@@ -4087,7 +4144,8 @@ function logActionText(act: string) {
|
||||
gancao_submit: '甘草下单',
|
||||
patch_rx_patient: '处方患者信息',
|
||||
update_amount: '修改订单金额',
|
||||
complete: '完成订单'
|
||||
complete: '完成订单',
|
||||
refund: '退款'
|
||||
}
|
||||
return m[act] || act
|
||||
}
|
||||
@@ -5193,7 +5251,6 @@ const completeOrderStatusOptions = [
|
||||
{ value: 7, label: '进行中' },
|
||||
{ value: 8, label: '暂不制药' },
|
||||
{ value: 9, label: '拒收' },
|
||||
{ value: 10, label: '退款' },
|
||||
{ value: 11, label: '保留药方' },
|
||||
{ value: 12, label: '制药缓发' }
|
||||
] as const
|
||||
@@ -5269,6 +5326,54 @@ async function submitCompleteOrder() {
|
||||
}
|
||||
}
|
||||
|
||||
// ─── 订单退款(已发货/已签收 + 支付审核通过)────────────────────────────────────────────
|
||||
const refundOrderDialogVisible = ref(false)
|
||||
const refundOrderId = ref(0)
|
||||
const refundOrderSubmitting = ref(false)
|
||||
const refundOrderFormRef = ref<FormInstance>()
|
||||
const refundOrderForm = reactive({ reason: '' })
|
||||
const refundOrderRules: FormRules = {
|
||||
reason: [{ required: true, message: '请填写退款原因', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
function onRefundOrderDialogClosed() {
|
||||
refundOrderId.value = 0
|
||||
refundOrderForm.reason = ''
|
||||
refundOrderFormRef.value?.clearValidate()
|
||||
}
|
||||
|
||||
function openRefundOrder(row: { id: number }) {
|
||||
refundOrderId.value = row.id
|
||||
refundOrderForm.reason = ''
|
||||
refundOrderDialogVisible.value = true
|
||||
}
|
||||
|
||||
async function submitRefundOrder() {
|
||||
const id = refundOrderId.value
|
||||
if (!id) return
|
||||
const valid = await refundOrderFormRef.value?.validate().catch(() => false)
|
||||
if (!valid) return
|
||||
refundOrderSubmitting.value = true
|
||||
try {
|
||||
await prescriptionOrderRefund({ id, reason: refundOrderForm.reason.trim() })
|
||||
feedback.msgSuccess('退款成功')
|
||||
refundOrderDialogVisible.value = false
|
||||
getLists()
|
||||
if (detailVisible.value && detailData.value?.id === id) {
|
||||
try {
|
||||
const r: any = await prescriptionOrderDetail({ id })
|
||||
const nd = r?.data ?? r ?? null
|
||||
if (nd) detailData.value = nd
|
||||
await fetchLogs(id)
|
||||
} catch { /* 静默 */ }
|
||||
}
|
||||
} catch {
|
||||
/* 拦截器已提示 */
|
||||
} finally {
|
||||
refundOrderSubmitting.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// ─── 补齐支付单(已发货状态)────────────────────────────────────────────
|
||||
const addPayOrderVisible = ref(false)
|
||||
const addPayOrderSaving = ref(false)
|
||||
|
||||
@@ -498,6 +498,9 @@
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item v-if="canAddPayOrderRow(row)" command="addPayOrder">补齐支付单</el-dropdown-item>
|
||||
<el-dropdown-item v-if="canCompleteRow(row)" command="complete">完成订单</el-dropdown-item>
|
||||
<el-dropdown-item v-if="canRefundRow(row)" command="refund">
|
||||
<span class="text-red-500">退款</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="canUploadGancaoRow(row)" command="submitGancao">上传药方</el-dropdown-item>
|
||||
<el-dropdown-item v-if="canWithdrawRow(row)" command="withdraw" divided>
|
||||
<span class="text-red-500">撤回订单</span>
|
||||
@@ -612,6 +615,16 @@
|
||||
>
|
||||
完成订单
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="canRefundRow(detailData)"
|
||||
v-perms="['tcm.prescriptionOrder/refund']"
|
||||
type="danger"
|
||||
size="small"
|
||||
plain
|
||||
@click="openRefundOrder(detailData)"
|
||||
>
|
||||
退款
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1854,6 +1867,42 @@
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 订单退款:须填写原因 -->
|
||||
<el-dialog
|
||||
v-model="refundOrderDialogVisible"
|
||||
title="订单退款"
|
||||
width="92%"
|
||||
:close-on-click-modal="false"
|
||||
destroy-on-close
|
||||
class="po-h5-dialog"
|
||||
@closed="onRefundOrderDialogClosed"
|
||||
>
|
||||
<el-alert
|
||||
type="warning"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="mb-4 !items-start"
|
||||
title="确认退款后,关联收款记录将全部标记为「已退款」,已付总额清零,且不可撤销。"
|
||||
/>
|
||||
<el-form ref="refundOrderFormRef" :model="refundOrderForm" :rules="refundOrderRules" label-width="88px">
|
||||
<el-form-item label="退款原因" prop="reason">
|
||||
<el-input
|
||||
v-model="refundOrderForm.reason"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
placeholder="请填写退款原因(必填)"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="refundOrderDialogVisible = false">取消</el-button>
|
||||
<el-button type="danger" :loading="refundOrderSubmitting" @click="submitRefundOrder">
|
||||
确认退款
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 补齐支付单 Dialog -->
|
||||
<el-dialog
|
||||
v-model="addPayOrderVisible"
|
||||
@@ -2416,6 +2465,7 @@ import {
|
||||
prescriptionOrderUpdateAmount,
|
||||
prescriptionOrderAddPayOrder,
|
||||
prescriptionOrderComplete,
|
||||
prescriptionOrderRefund,
|
||||
prescriptionOrderRevokeRxAudit,
|
||||
prescriptionOrderRevokePayAudit,
|
||||
prescriptionOrderPatchPrescriptionPatient,
|
||||
@@ -3237,6 +3287,10 @@ function canCompleteRow(row: { fulfillment_status?: number; payment_slip_audit_s
|
||||
return (fs === 5 || fs === 6) && Number(row.payment_slip_audit_status) === 1
|
||||
}
|
||||
|
||||
function canRefundRow(row: { fulfillment_status?: number; payment_slip_audit_status?: number }) {
|
||||
return canCompleteRow(row)
|
||||
}
|
||||
|
||||
function canQuickTrackRow(row: { fulfillment_status?: number }) {
|
||||
return Number(row.fulfillment_status) === 5
|
||||
}
|
||||
@@ -3286,13 +3340,14 @@ const h5ActiveFilterCount = computed(() => {
|
||||
|
||||
// H5: 判断列表卡片「更多」下拉是否需要展示
|
||||
function hasMoreCardActions(row: Record<string, any>) {
|
||||
return canAddPayOrderRow(row) || canCompleteRow(row) || canUploadGancaoRow(row) || canWithdrawRow(row)
|
||||
return canAddPayOrderRow(row) || canCompleteRow(row) || canRefundRow(row) || canUploadGancaoRow(row) || canWithdrawRow(row)
|
||||
}
|
||||
|
||||
// H5: 处理列表卡片「更多」下拉指令
|
||||
function handleCardMoreCommand(cmd: string, row: Record<string, any>) {
|
||||
if (cmd === 'addPayOrder') openAddPayOrder(row as any)
|
||||
else if (cmd === 'complete') confirmComplete(row as any)
|
||||
else if (cmd === 'refund') openRefundOrder(row as any)
|
||||
else if (cmd === 'submitGancao') confirmSubmitGancaoRecipel(row as any)
|
||||
else if (cmd === 'withdraw') confirmWithdraw(row as any)
|
||||
}
|
||||
@@ -3607,7 +3662,8 @@ function logActionText(act: string) {
|
||||
gancao_submit: '甘草下单',
|
||||
patch_rx_patient: '处方患者信息',
|
||||
update_amount: '修改订单金额',
|
||||
complete: '完成订单'
|
||||
complete: '完成订单',
|
||||
refund: '退款'
|
||||
}
|
||||
return m[act] || act
|
||||
}
|
||||
@@ -4553,7 +4609,6 @@ const completeOrderStatusOptions = [
|
||||
{ value: 7, label: '进行中' },
|
||||
{ value: 8, label: '暂不制药' },
|
||||
{ value: 9, label: '拒收' },
|
||||
{ value: 10, label: '退款' },
|
||||
{ value: 11, label: '保留药方' },
|
||||
{ value: 12, label: '制药缓发' }
|
||||
] as const
|
||||
@@ -4586,6 +4641,53 @@ async function submitCompleteOrder() {
|
||||
}
|
||||
}
|
||||
|
||||
const refundOrderDialogVisible = ref(false)
|
||||
const refundOrderId = ref(0)
|
||||
const refundOrderSubmitting = ref(false)
|
||||
const refundOrderFormRef = ref<FormInstance>()
|
||||
const refundOrderForm = reactive({ reason: '' })
|
||||
const refundOrderRules: FormRules = {
|
||||
reason: [{ required: true, message: '请填写退款原因', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
function onRefundOrderDialogClosed() {
|
||||
refundOrderId.value = 0
|
||||
refundOrderForm.reason = ''
|
||||
refundOrderFormRef.value?.clearValidate()
|
||||
}
|
||||
|
||||
function openRefundOrder(row: { id: number }) {
|
||||
refundOrderId.value = row.id
|
||||
refundOrderForm.reason = ''
|
||||
refundOrderDialogVisible.value = true
|
||||
}
|
||||
|
||||
async function submitRefundOrder() {
|
||||
const id = refundOrderId.value
|
||||
if (!id) return
|
||||
const valid = await refundOrderFormRef.value?.validate().catch(() => false)
|
||||
if (!valid) return
|
||||
refundOrderSubmitting.value = true
|
||||
try {
|
||||
await prescriptionOrderRefund({ id, reason: refundOrderForm.reason.trim() })
|
||||
feedback.msgSuccess('退款成功')
|
||||
refundOrderDialogVisible.value = false
|
||||
getLists()
|
||||
if (detailVisible.value && detailData.value?.id === id) {
|
||||
try {
|
||||
const r: any = await prescriptionOrderDetail({ id })
|
||||
const nd = r?.data ?? r ?? null
|
||||
if (nd) detailData.value = nd
|
||||
await fetchLogs(id)
|
||||
} catch { /* 静默 */ }
|
||||
}
|
||||
} catch {
|
||||
/* 拦截器已提示 */
|
||||
} finally {
|
||||
refundOrderSubmitting.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// ─── 补齐支付单(已发货状态)────────────────────────────────────────────
|
||||
const addPayOrderVisible = ref(false)
|
||||
const addPayOrderSaving = ref(false)
|
||||
|
||||
Reference in New Issue
Block a user