yxh
2026-10-03 d553a4be94d4f6ee162cc353a28b220403909cfc
src/views/ecg/checktype/CheckTypeForm.vue
@@ -1,77 +1,128 @@
<template>
  <Dialog :title="dialogTitle" v-model="dialogVisible">
  <Dialog :title="dialogTitle" v-model="dialogVisible" width="900px">
    <!--
      需求9:编辑页由「一列布局」改为「一行两列布局」,避免页面过长。
      用 el-row / el-col 实现:默认每项 :span="12"(半行),
      以下三项**单占一行** :span="24":
        · 显示患者条码(多选,需要横向空间)
        · 排队序号规则(带三行说明文字)
        · 亲和项目(多选,项目多时一行放不下)
    -->
    <el-form
      ref="formRef"
      :model="formData"
      :rules="formRules"
      label-width="140px"
      label-width="130px"
      v-loading="formLoading"
    >
      <el-form-item label="检查类型名" prop="name">
        <el-input v-model="formData.name" placeholder="请输入检查类型名" />
      </el-form-item>
      <el-form-item label="检查类型值" prop="value">
        <el-input v-model="formData.value" placeholder="请输入检查类型值" />
      </el-form-item>
      <el-form-item label="允许准备中人数" prop="readyNum">
        <el-input v-model="formData.readyNum" placeholder="请输入允许准备中人数" />
      </el-form-item>
      <el-form-item label="需要设备领用" prop="needDevReady">
        <el-switch
            v-model="formData.needDevReady"
            :active-value="1"
            :inactive-value="0"
        />
      </el-form-item>
      <el-form-item label="叫号列" prop="callingColumn">
        <el-input v-model="formData.callingColumn" placeholder="请输入叫号列" />
      </el-form-item>
      <el-form-item label="显示患者条码" prop="displayBarcode">
        <el-checkbox-group v-model="formData.displayBarcode">
          <el-checkbox
              v-for="(dict, index) in getIntDictOptions(DICT_TYPE.ECG_PAT_SOURCE)"
              :key="index"
              :label="dict.label"
              :value=dict.value
          />
        </el-checkbox-group>
      </el-form-item>
      <el-form-item label="需要确费" prop="expenseRecognition">
        <el-switch
            v-model="formData.expenseRecognition"
            :active-value="1"
            :inactive-value="0"
        />
      </el-form-item>
      <el-form-item label="时段预约规定人数" prop="timeslotBookNum">
        <el-input v-model="formData.timeslotBookNum" placeholder="请输入时段预约规定人数" />
      </el-form-item>
      <el-form-item label="每时段预留人数" prop="timeslotReservedNum">
        <el-input v-model="formData.timeslotReservedNum" placeholder="请输入每时段预留人数" />
      </el-form-item>
      <el-form-item label="预约注意事项" prop="notes">
        <el-input v-model="formData.notes" placeholder="请输入预约注意事项" />
      </el-form-item>
      <el-form-item label="序号前缀" prop="seqPrefix">
        <el-input v-model="formData.seqPrefix" placeholder="请输入序号前缀" />
      </el-form-item>
      <!-- 需求:排队序号规则(签到时如何给患者排队序号) -->
      <el-form-item label="排队序号规则" prop="seqRule">
        <el-select v-model="formData.seqRule" placeholder="请选择排队序号规则" class="w-full">
          <el-option v-for="dict in getIntDictOptions(DICT_TYPE.ECG_SEQ_RULE)"
                     :key="dict.value" :label="dict.label" :value="dict.value" />
        </el-select>
        <div class="text-12px text-gray-500 leading-5 mt-1">
          预约号:用预约系统下发的号,签到不再分配;<br />
          签到序号:当天同检查类型内连续递增(第 1 个签到=1 号),每 9 个号预留 1 个给加急;<br />
          时段号:按预约时间段给号(<b>不选时默认此项</b>,与改造前行为一致)。
        </div>
      </el-form-item>
      <el-form-item label="亲和的检查类型" prop="affinityCheckTypes">
        <el-checkbox-group v-model="formData.affinityCheckTypes">
          <el-checkbox v-for="checkTypeVO in checkTypeStore.getCheckTypeOptions()" :value="checkTypeVO.value" :key="checkTypeVO.value">{{checkTypeVO.label}}</el-checkbox>
        </el-checkbox-group>
      </el-form-item>
      <el-row :gutter="20">
        <el-col :span="12">
          <el-form-item label="检查项目名称" prop="name">
            <el-input v-model="formData.name" placeholder="请输入检查项目名称" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检查项目值" prop="value">
            <el-input v-model="formData.value" placeholder="请输入检查项目值" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="排序序号" prop="sort">
            <el-input-number
              v-model="formData.sort"
              :min="0"
              class="!w-full"
              placeholder="越小越靠前"
            />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="允许准备中人数" prop="readyNum">
            <el-input v-model="formData.readyNum" placeholder="请输入允许准备中人数" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="需要设备领用" prop="needDevReady">
            <el-switch v-model="formData.needDevReady" :active-value="1" :inactive-value="0" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="需要确费" prop="expenseRecognition">
            <el-switch v-model="formData.expenseRecognition" :active-value="1" :inactive-value="0" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="叫号列" prop="callingColumn">
            <el-input v-model="formData.callingColumn" placeholder="请输入叫号列" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="序号前缀" prop="seqPrefix">
            <el-input v-model="formData.seqPrefix" placeholder="请输入序号前缀" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="时段预约规定人数" prop="timeslotBookNum">
            <el-input v-model="formData.timeslotBookNum" placeholder="请输入时段预约规定人数" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="每时段预留人数" prop="timeslotReservedNum">
            <el-input v-model="formData.timeslotReservedNum" placeholder="请输入每时段预留人数" />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="预约注意事项" prop="notes">
            <el-input v-model="formData.notes" placeholder="请输入预约注意事项" />
          </el-form-item>
        </el-col>
        <!-- ↓↓↓ 以下三项按要求「单占一行」 ↓↓↓ -->
        <el-col :span="24">
          <el-form-item label="显示患者条码" prop="displayBarcode">
            <el-checkbox-group v-model="formData.displayBarcode">
              <el-checkbox
                  v-for="(dict, index) in getIntDictOptions(DICT_TYPE.ECG_PAT_SOURCE)"
                  :key="index"
                  :label="dict.label"
                  :value="dict.value"
              />
            </el-checkbox-group>
          </el-form-item>
        </el-col>
        <!-- 需求:排队序号规则(签到时如何给患者排队序号) -->
        <el-col :span="24">
          <el-form-item label="排队序号规则" prop="seqRule">
            <el-select v-model="formData.seqRule" placeholder="请选择排队序号规则" class="w-full">
              <el-option
                v-for="dict in getIntDictOptions(DICT_TYPE.ECG_SEQ_RULE)"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
            <div class="text-12px text-gray-500 leading-5 mt-1">
              预约号:用预约系统下发的号,签到不再分配;<br />
              签到序号:当天同检查项目内连续递增(第 1 个签到=1 号),每 9 个号预留 1 个给加急;<br />
              时段号:按预约时间段给号(<b>不选时默认此项</b>,与改造前行为一致)。
            </div>
          </el-form-item>
        </el-col>
        <el-col :span="24">
          <el-form-item label="亲和项目" prop="affinityCheckTypes">
            <el-checkbox-group v-model="formData.affinityCheckTypes">
              <el-checkbox v-for="checkTypeVO in checkTypeStore.getCheckTypeOptions()" :value="checkTypeVO.value" :key="checkTypeVO.value">{{checkTypeVO.label}}</el-checkbox>
            </el-checkbox-group>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <template #footer>
      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -84,7 +135,7 @@
import {useCheckTypeStore} from "@/store/modules/checkType";
import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
/** 检查类型 表单 */
/** 检查项目 表单 */
defineOptions({ name: 'CheckTypeForm' })
const { t } = useI18n() // 国际化
@@ -111,7 +162,9 @@
  notes: undefined,
  seqPrefix: undefined,
  // 排队序号规则:留空即按后端默认(时段号)处理,与改造前行为一致
  seqRule: undefined
  seqRule: undefined,
  // 需求9:排序序号(越小越靠前)
  sort: 0
})
const formRules = reactive({
})
@@ -175,7 +228,8 @@
    affinityCheckTypes: [],
    notes: undefined,
    seqPrefix: undefined,
    seqRule: undefined
    seqRule: undefined,
    sort: 0
  }
  formRef.value?.resetFields()
}