更新
This commit is contained in:
@@ -272,7 +272,7 @@
|
||||
:fetch-fun="prescriptionOrderExport"
|
||||
:params="prescriptionOrderExportParams"
|
||||
:page-size="pager.size"
|
||||
export-hint="导出范围与上方筛选一致(履约状态、创建时间及其他条件均会生效)。"
|
||||
export-hint="导出范围与上方筛选一致(履约状态、创建时间及其他条件均会生效)。含「自媒体渠道(挂号渠道来源)」:按诊单关联患者取最近一条挂号的渠道字典与细分。"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -1377,7 +1377,7 @@
|
||||
<!-- 编辑(分步向导与「创建业务订单」弹窗统一) -->
|
||||
<el-dialog
|
||||
v-model="editVisible"
|
||||
title="编辑业务订单"
|
||||
:title="editGancaoLogisticsOnlyMode ? '修改物流信息(甘草订单)' : '编辑业务订单'"
|
||||
width="940px"
|
||||
top="4vh"
|
||||
:close-on-click-modal="false"
|
||||
@@ -1400,18 +1400,33 @@
|
||||
</el-tooltip>
|
||||
</div>
|
||||
|
||||
<el-steps
|
||||
:active="editOrderStep"
|
||||
finish-status="success"
|
||||
align-center
|
||||
class="create-order-steps"
|
||||
<el-alert
|
||||
v-if="editGancaoLogisticsOnlyMode"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="mb-4"
|
||||
title="订单已提交甘草,仅可修改快递单号与承运商;地址、金额等变更请先走取消流程。"
|
||||
>
|
||||
<el-step title="患者与收货" description="诊单与物流地址" />
|
||||
<el-step title="服务与支付单" description="套餐与关联收款" />
|
||||
<el-step title="金额与确认" description="费用与备注" />
|
||||
</el-steps>
|
||||
<template v-if="editGancaoDisplayNo" #default>
|
||||
<div class="text-sm text-gray-700 mt-1">甘草处方单号:{{ editGancaoDisplayNo }}</div>
|
||||
</template>
|
||||
</el-alert>
|
||||
|
||||
<p class="create-order-step-lead">{{ editOrderStepLead }}</p>
|
||||
<template v-if="!editGancaoLogisticsOnlyMode">
|
||||
<el-steps
|
||||
:active="editOrderStep"
|
||||
finish-status="success"
|
||||
align-center
|
||||
class="create-order-steps"
|
||||
>
|
||||
<el-step title="患者与收货" description="诊单与物流地址" />
|
||||
<el-step title="服务与支付单" description="套餐与关联收款" />
|
||||
<el-step title="金额与确认" description="费用与备注" />
|
||||
</el-steps>
|
||||
|
||||
<p class="create-order-step-lead">{{ editOrderStepLead }}</p>
|
||||
</template>
|
||||
|
||||
<el-form
|
||||
ref="editFormRef"
|
||||
@@ -1420,6 +1435,24 @@
|
||||
label-width="108px"
|
||||
class="create-order-form"
|
||||
>
|
||||
<template v-if="editGancaoLogisticsOnlyMode">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="物流设置">
|
||||
<div class="flex gap-2 w-full">
|
||||
<el-select v-model="editForm.express_company" placeholder="承运商" class="w-[140px] shrink-0">
|
||||
<el-option label="自动识别" value="auto" />
|
||||
<el-option label="顺丰速运" value="sf" />
|
||||
<el-option label="京东快递" value="jd" />
|
||||
<el-option label="极兔速递" value="jt" />
|
||||
</el-select>
|
||||
<el-input v-model="editForm.tracking_number" maxlength="80" placeholder="快递单号" class="flex-1 min-w-0" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<template v-if="!editGancaoLogisticsOnlyMode">
|
||||
<div v-show="editOrderStep === 0" class="create-order-step-panel">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
@@ -1743,12 +1776,13 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="create-order-footer">
|
||||
<div class="create-order-footer__hint">
|
||||
<div v-if="!editGancaoLogisticsOnlyMode" class="create-order-footer__hint">
|
||||
<span class="create-order-footer__step">第 {{ editOrderStep + 1 }} / 3 步</span>
|
||||
<span v-if="editOrderStep === 2 && editDepositMin > 0" class="create-order-footer__warn">
|
||||
订单金额与关联支付单合计须 ≥ ¥{{ formatMoney(editDepositMin) }}
|
||||
@@ -1756,17 +1790,19 @@
|
||||
</div>
|
||||
<div class="create-order-footer__actions">
|
||||
<el-button size="large" @click="editVisible = false">取消</el-button>
|
||||
<el-button v-if="editOrderStep > 0" size="large" @click="goEditOrderPrevStep">上一步</el-button>
|
||||
<template v-if="!editGancaoLogisticsOnlyMode">
|
||||
<el-button v-if="editOrderStep > 0" size="large" @click="goEditOrderPrevStep">上一步</el-button>
|
||||
<el-button
|
||||
v-if="editOrderStep < 2"
|
||||
type="primary"
|
||||
size="large"
|
||||
@click="goEditOrderNextStep"
|
||||
>
|
||||
下一步
|
||||
</el-button>
|
||||
</template>
|
||||
<el-button
|
||||
v-if="editOrderStep < 2"
|
||||
type="primary"
|
||||
size="large"
|
||||
@click="goEditOrderNextStep"
|
||||
>
|
||||
下一步
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="editOrderStep === 2"
|
||||
v-if="editGancaoLogisticsOnlyMode || editOrderStep === 2"
|
||||
type="primary"
|
||||
size="large"
|
||||
:loading="editSaving"
|
||||
@@ -3234,14 +3270,21 @@ function canEditRow(row: {
|
||||
gancao_reciperl_order_no?: string | null
|
||||
gancao_submit_time?: number | null
|
||||
}) {
|
||||
// 已发货(5)、已签收(6)、已完成(3)、已取消(4) 不可编辑
|
||||
const fs = Number(row.fulfillment_status)
|
||||
if (fs !== 1 && fs !== 2) return false
|
||||
// 已成功提交甘草(已生成甘草处方单号 或 提交时间 > 0)不允许再编辑
|
||||
// 已完成(3)、已取消(4) 不可编辑
|
||||
if (fs === 3 || fs === 4) return false
|
||||
|
||||
const gcNo = String(row.gancao_reciperl_order_no || '').trim()
|
||||
const gcTime = Number(row.gancao_submit_time || 0)
|
||||
if (gcNo !== '' || gcTime > 0) return false
|
||||
return true
|
||||
const gcLocked = gcNo !== '' || gcTime > 0
|
||||
|
||||
// 甘草已提交:仅允许在待双审/履约中/已发货/进行中下修改快递(已签收 6 不可改单号;后端 edit 亦拦截)
|
||||
if (gcLocked) {
|
||||
return [1, 2, 5, 7].includes(fs)
|
||||
}
|
||||
|
||||
// 未提交甘草:仅待双审(1)、履约中(2)可全量编辑
|
||||
return fs === 1 || fs === 2
|
||||
}
|
||||
|
||||
function canRxAudit(row: { prescription_audit_status?: number; fulfillment_status?: number }) {
|
||||
@@ -3310,9 +3353,8 @@ function canCompleteRow(row: { fulfillment_status?: number; payment_slip_audit_s
|
||||
}
|
||||
|
||||
function canQuickTrackRow(row: { fulfillment_status?: number }) {
|
||||
// 已发货(5) / 已签收(6) 后如需修改快递信息可单独使用此功能
|
||||
const fs = Number(row.fulfillment_status)
|
||||
return fs === 5 || fs === 6
|
||||
// 仅已发货(5) 可修改快递单号;已签收(6) 不可再改
|
||||
return Number(row.fulfillment_status) === 5
|
||||
}
|
||||
|
||||
function canUpdateAmount(row: { id?: number; fulfillment_status?: number } | null | undefined) {
|
||||
@@ -3948,6 +3990,10 @@ const editSaving = ref(false)
|
||||
const editOrderStep = ref(0)
|
||||
/** 顶部「关联处方」卡片数据(来自业务订单详情中的 prescription) */
|
||||
const editOrderPrescription = ref<Record<string, any> | null>(null)
|
||||
/** 甘草 SCM 已提交:弹窗仅展示并提交快递单号与承运商 */
|
||||
const editGancaoLogisticsOnlyMode = ref(false)
|
||||
/** 用于提示文案展示甘草处方单号 */
|
||||
const editGancaoDisplayNo = ref('')
|
||||
|
||||
const editOrderStepLead = computed(() => {
|
||||
const texts = [
|
||||
@@ -4126,6 +4172,8 @@ const editRules = computed<FormRules>(() => {
|
||||
function resetEditOrderDialog() {
|
||||
editOrderStep.value = 0
|
||||
editOrderPrescription.value = null
|
||||
editGancaoLogisticsOnlyMode.value = false
|
||||
editGancaoDisplayNo.value = ''
|
||||
editFormRef.value?.clearValidate()
|
||||
}
|
||||
|
||||
@@ -4245,7 +4293,12 @@ async function openEdit(row: { id: number }) {
|
||||
editForm.pay_order_ids = Array.isArray(pids) ? pids.map((x: unknown) => Number(x)).filter((n) => !Number.isNaN(n)) : []
|
||||
editForm.internal_cost =
|
||||
d.internal_cost != null && d.internal_cost !== '' ? Number(d.internal_cost) : undefined
|
||||
|
||||
|
||||
const gcNo = String(d.gancao_reciperl_order_no || '').trim()
|
||||
const gcTime = Number(d.gancao_submit_time || 0)
|
||||
editGancaoLogisticsOnlyMode.value = gcNo !== '' || gcTime > 0
|
||||
editGancaoDisplayNo.value = gcNo || ''
|
||||
|
||||
await loadEditPaidOrders(editForm.diagnosis_id, editForm.id)
|
||||
|
||||
// BUG FIX: NextTick 清理刚展开时意外触发的金额下限表单校验红字
|
||||
@@ -4261,8 +4314,14 @@ async function openEdit(row: { id: number }) {
|
||||
}
|
||||
|
||||
async function submitEdit() {
|
||||
if (!editFormRef.value || editOrderStep.value !== 2) return
|
||||
await editFormRef.value.validate()
|
||||
if (!editFormRef.value) return
|
||||
const gancaoLogisticsOnly = editGancaoLogisticsOnlyMode.value
|
||||
if (!gancaoLogisticsOnly && editOrderStep.value !== 2) return
|
||||
if (!gancaoLogisticsOnly) {
|
||||
await editFormRef.value.validate()
|
||||
} else {
|
||||
editFormRef.value.clearValidate()
|
||||
}
|
||||
editSaving.value = true
|
||||
try {
|
||||
const payload: Record<string, unknown> = {
|
||||
@@ -4634,8 +4693,8 @@ async function submitQuickTrack() {
|
||||
if (nd) detailData.value = nd
|
||||
} catch { /* 静默 */ }
|
||||
}
|
||||
// 履约中状态且刚填单号,提示是否立即发货
|
||||
if (canShipRow({ fulfillment_status: 2, tracking_number: quickTrackForm.tracking_number })) {
|
||||
// 仅保存前为履约中(2)时才询问确认发货;已发货(5)/已签收(6)等修改单号不再弹窗
|
||||
if (canShipRow({ fulfillment_status: Number(d.fulfillment_status) })) {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`快递单号「${quickTrackForm.tracking_number}」已保存,是否立即确认发货?`,
|
||||
|
||||
@@ -3052,14 +3052,18 @@ function canEditRow(row: {
|
||||
gancao_reciperl_order_no?: string | null
|
||||
gancao_submit_time?: number | null
|
||||
}) {
|
||||
// 已发货(5)、已签收(6)、已完成(3)、已取消(4) 不可编辑
|
||||
const fs = Number(row.fulfillment_status)
|
||||
if (fs !== 1 && fs !== 2) return false
|
||||
// 已成功提交甘草(已生成甘草处方单号 或 提交时间 > 0)不允许再编辑
|
||||
if (fs === 3 || fs === 4) return false
|
||||
|
||||
const gcNo = String(row.gancao_reciperl_order_no || '').trim()
|
||||
const gcTime = Number(row.gancao_submit_time || 0)
|
||||
if (gcNo !== '' || gcTime > 0) return false
|
||||
return true
|
||||
const gcLocked = gcNo !== '' || gcTime > 0
|
||||
|
||||
if (gcLocked) {
|
||||
return [1, 2, 5, 7].includes(fs)
|
||||
}
|
||||
|
||||
return fs === 1 || fs === 2
|
||||
}
|
||||
|
||||
function canRxAudit(row: { prescription_audit_status?: number; fulfillment_status?: number }) {
|
||||
@@ -3128,9 +3132,7 @@ function canCompleteRow(row: { fulfillment_status?: number; payment_slip_audit_s
|
||||
}
|
||||
|
||||
function canQuickTrackRow(row: { fulfillment_status?: number }) {
|
||||
// 已发货(5) / 已签收(6) 后如需修改快递信息可单独使用此功能
|
||||
const fs = Number(row.fulfillment_status)
|
||||
return fs === 5 || fs === 6
|
||||
return Number(row.fulfillment_status) === 5
|
||||
}
|
||||
|
||||
function canUploadGancaoRow(row: {
|
||||
@@ -4312,8 +4314,8 @@ async function submitQuickTrack() {
|
||||
if (nd) detailData.value = nd
|
||||
} catch { /* 静默 */ }
|
||||
}
|
||||
// 履约中状态且刚填单号,提示是否立即发货
|
||||
if (canShipRow({ fulfillment_status: 2, tracking_number: quickTrackForm.tracking_number })) {
|
||||
// 仅保存前为履约中(2)时才询问确认发货;已发货(5)/已签收(6)等修改单号不再弹窗
|
||||
if (canShipRow({ fulfillment_status: Number(d.fulfillment_status) })) {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`快递单号「${quickTrackForm.tracking_number}」已保存,是否立即确认发货?`,
|
||||
|
||||
Reference in New Issue
Block a user