Update hlw-rule-set.vue

This commit is contained in:
huxuejian 2026-07-31 16:21:49 +08:00
parent 8c7cbbd2e6
commit 8617472aec

View File

@ -74,6 +74,99 @@
</el-form-item>
</el-form>
</el-card>
<el-card class="mt-15px">
<template #header>
<div active-title-bar class="font-semibold">自动化问诊设置</div>
</template>
<el-alert
class="mb-15px"
type="info"
:closable="false"
title="自动化操作会在配置的时间区间内随机延迟执行;关闭开关后,待执行任务会在执行前自动取消。"
/>
<el-form label-suffix="">
<el-form-item label="自动接诊">
<el-switch
:model-value="form.autoAcceptOrder"
@update:model-value="change($event, 'autoAcceptOrder')"
/>
</el-form-item>
<el-form-item label="自动接诊延时">
<el-input-number
:model-value="form.autoAcceptDelayMinSeconds"
:min="0"
:max="3600"
:precision="0"
controls-position="right"
@update:model-value="change($event, 'autoAcceptDelayMinSeconds', 'autoAcceptDelayMaxSeconds')"
/>
<span class="mx-12px"></span>
<el-input-number
:model-value="form.autoAcceptDelayMaxSeconds"
:min="0"
:max="3600"
:precision="0"
controls-position="right"
@update:model-value="change($event, 'autoAcceptDelayMaxSeconds', 'autoAcceptDelayMinSeconds')"
/>
<span class="ml-10px text-gray-500"></span>
</el-form-item>
<el-form-item label="自动开方">
<el-switch
:model-value="form.autoOpenRx"
@update:model-value="change($event, 'autoOpenRx')"
/>
</el-form-item>
<el-form-item label="自动开方延时">
<el-input-number
:model-value="form.autoOpenRxDelayMinSeconds"
:min="0"
:max="3600"
:precision="0"
controls-position="right"
@update:model-value="change($event, 'autoOpenRxDelayMinSeconds', 'autoOpenRxDelayMaxSeconds')"
/>
<span class="mx-12px"></span>
<el-input-number
:model-value="form.autoOpenRxDelayMaxSeconds"
:min="0"
:max="3600"
:precision="0"
controls-position="right"
@update:model-value="change($event, 'autoOpenRxDelayMaxSeconds', 'autoOpenRxDelayMinSeconds')"
/>
<span class="ml-10px text-gray-500"></span>
</el-form-item>
<el-form-item label="自动审方">
<el-switch
:model-value="form.autoPassRx"
@update:model-value="change($event, 'autoPassRx')"
/>
</el-form-item>
<el-form-item label="自动审方延时">
<el-input-number
:model-value="form.autoPassRxDelayMinSeconds"
:min="0"
:max="3600"
:precision="0"
controls-position="right"
@update:model-value="change($event, 'autoPassRxDelayMinSeconds', 'autoPassRxDelayMaxSeconds')"
/>
<span class="mx-12px"></span>
<el-input-number
:model-value="form.autoPassRxDelayMaxSeconds"
:min="0"
:max="3600"
:precision="0"
controls-position="right"
@update:model-value="change($event, 'autoPassRxDelayMaxSeconds', 'autoPassRxDelayMinSeconds')"
/>
<span class="ml-10px text-gray-500"></span>
</el-form-item>
</el-form>
</el-card>
</layout-main>
<layout-item>
<div v-if="changed" text-center class="py-10px">
@ -97,6 +190,15 @@ const data = ref({
acceptDuration: 0,
consultationDuration: 0,
medicinePurchaseRxDuration: 0,
autoAcceptOrder: false,
autoOpenRx: false,
autoPassRx: false,
autoAcceptDelayMinSeconds: 2,
autoAcceptDelayMaxSeconds: 5,
autoOpenRxDelayMinSeconds: 20,
autoOpenRxDelayMaxSeconds: 40,
autoPassRxDelayMinSeconds: 10,
autoPassRxDelayMaxSeconds: 30,
emsExpressDiscountFee: '',
emsExpressFee: '',
fengNiaoExpressDiscountFee: '',
@ -163,6 +265,17 @@ async function confirm(params) {
ElMessage.error('配药处方持续时长不能小于10分钟');
return;
}
const delayPairs = [
['autoAcceptDelayMinSeconds', 'autoAcceptDelayMaxSeconds', '自动接诊'],
['autoOpenRxDelayMinSeconds', 'autoOpenRxDelayMaxSeconds', '自动开方'],
['autoPassRxDelayMinSeconds', 'autoPassRxDelayMaxSeconds', '自动审方'],
];
for (const [minKey, maxKey, label] of delayPairs) {
if (form.value[minKey] > form.value[maxKey]) {
ElMessage.error(`${label}最小延时不能大于最大延时`);
return;
}
}
if ('emsExpressFee' in editForm.value && typeof emsFee.value === 'string') {
ElMessage.error('邮政配送费用配置不正确');
@ -200,6 +313,15 @@ async function getData() {
data.value.acceptDuration = typeof config.acceptDuration === 'number' ? config.acceptDuration : 0;
data.value.consultationDuration = typeof config.consultationDuration === 'number' ? config.consultationDuration : 0;
data.value.medicinePurchaseRxDuration = typeof config.medicinePurchaseRxDuration === 'number' ? config.medicinePurchaseRxDuration : 0;
data.value.autoAcceptOrder = config.autoAcceptOrder === true;
data.value.autoOpenRx = config.autoOpenRx === true;
data.value.autoPassRx = config.autoPassRx === true;
data.value.autoAcceptDelayMinSeconds = Number.isInteger(config.autoAcceptDelayMinSeconds) ? config.autoAcceptDelayMinSeconds : 2;
data.value.autoAcceptDelayMaxSeconds = Number.isInteger(config.autoAcceptDelayMaxSeconds) ? config.autoAcceptDelayMaxSeconds : 5;
data.value.autoOpenRxDelayMinSeconds = Number.isInteger(config.autoOpenRxDelayMinSeconds) ? config.autoOpenRxDelayMinSeconds : 20;
data.value.autoOpenRxDelayMaxSeconds = Number.isInteger(config.autoOpenRxDelayMaxSeconds) ? config.autoOpenRxDelayMaxSeconds : 40;
data.value.autoPassRxDelayMinSeconds = Number.isInteger(config.autoPassRxDelayMinSeconds) ? config.autoPassRxDelayMinSeconds : 10;
data.value.autoPassRxDelayMaxSeconds = Number.isInteger(config.autoPassRxDelayMaxSeconds) ? config.autoPassRxDelayMaxSeconds : 30;
data.value.presOpen = typeof config.presOpen === 'boolean' ? config.presOpen : false;
data.value.emsExpressFee = typeof config.emsExpressFee === 'number' ? config.emsExpressFee : '';
data.value.emsExpressDiscountFee = typeof config.emsExpressDiscountFee === 'number' ? config.emsExpressDiscountFee : '';