WXL
3 天以前 7f67f2e6fbb7d47249fef0905a40a66f13ae2f2b
src/views/business/transfer/TransportEdit.vue
@@ -47,9 +47,10 @@
      :model="formData"
      :rules="formRules"
      label-width="120px"
      class="paper-form"
    >
      <!-- 基础信息 -->
      <el-card class="form-section" shadow="never">
      <el-card class="form-section paper-card" shadow="never">
        <div slot="header" class="section-header">
          <i
            class="el-icon-document"
@@ -58,70 +59,60 @@
          <span>基础信息</span>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="案例编号" prop="caseNo">
              <el-input
                v-model="formData.caseNo"
                :disabled="true"
                placeholder="自动从案例获取"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <div class="form-row">
          <el-form-item label="案例编号" prop="caseNo" class="col-half">
            <el-input
              v-model="formData.caseNo"
              :disabled="true"
              placeholder="自动从案例获取"
            />
          </el-form-item>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="患者姓名" prop="patName">
              <el-input
                v-model="formData.patName"
                :disabled="true"
                placeholder="自动从案例获取"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="性别" prop="sex">
              <el-select
                v-model="formData.sex"
                :disabled="true"
                placeholder="请选择性别"
                style="width: 100%"
              >
                <el-option label="男" value="1" />
                <el-option label="女" value="2" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <div class="form-row">
          <el-form-item label="患者姓名" prop="patName" class="col-half">
            <el-input
              v-model="formData.patName"
              :disabled="true"
              placeholder="自动从案例获取"
            />
          </el-form-item>
          <el-form-item label="性别" prop="sex" class="col-half">
            <el-select
              v-model="formData.sex"
              :disabled="true"
              placeholder="请选择性别"
              style="width: 100%"
            >
              <el-option label="男" value="1" />
              <el-option label="女" value="2" />
            </el-select>
          </el-form-item>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="年龄" prop="age">
              <el-input-number
                v-model="formData.age"
                :min="0"
                :max="120"
                :disabled="true"
                placeholder="自动从案例获取"
                style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="疾病诊断" prop="diagnosisname">
              <el-input
                v-model="formData.diagnosisname"
                :disabled="true"
                placeholder="自动从案例获取"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <div class="form-row">
          <el-form-item label="年龄" prop="age" class="col-half">
            <el-input-number
              v-model="formData.age"
              :min="0"
              :max="120"
              :disabled="true"
              placeholder="自动从案例获取"
              style="width: 100%"
            />
          </el-form-item>
          <el-form-item label="疾病诊断" prop="diagnosisname" class="col-half">
            <el-input
              v-model="formData.diagnosisname"
              :disabled="true"
              placeholder="自动从案例获取"
            />
          </el-form-item>
        </div>
      </el-card>
      <!-- 医院信息 -->
      <el-card class="form-section" shadow="never">
      <el-card class="form-section paper-card" shadow="never">
        <div slot="header" class="section-header">
          <i
            class="el-icon-office-building"
@@ -130,47 +121,39 @@
          <span>医院信息</span>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="治疗医院" prop="treatmentHospitalName">
              <el-input
                v-model="formData.treatmentHospitalName"
                :disabled="true"
                placeholder="自动从案例获取"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="治疗科室" prop="treatmentDeptName">
              <el-input
                v-model="formData.treatmentDeptName"
                placeholder="请输入治疗科室名称"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="ICU评估医生" prop="icuDoctor">
              <el-input
                v-model="formData.icuDoctor"
                placeholder="请输入ICU评估医生"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="ICU医生电话" prop="icuDoctorPhone">
              <el-input
                v-model="formData.icuDoctorPhone"
                placeholder="请输入ICU医生手机号"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <div class="form-row">
          <el-form-item label="治疗医院" prop="treatmentHospitalName" class="col-half">
            <el-input
              v-model="formData.treatmentHospitalName"
              :disabled="true"
              placeholder="自动从案例获取"
            />
          </el-form-item>
          <el-form-item label="治疗科室" prop="treatmentDeptName" class="col-half">
            <el-input
              v-model="formData.treatmentDeptName"
              placeholder="请输入治疗科室名称"
            />
          </el-form-item>
        </div>
        <div class="form-row">
          <el-form-item label="ICU评估医生" prop="icuDoctor" class="col-half">
            <el-input
              v-model="formData.icuDoctor"
              placeholder="请输入ICU评估医生"
            />
          </el-form-item>
          <el-form-item label="ICU医生电话" prop="icuDoctorPhone" class="col-half">
            <el-input
              v-model="formData.icuDoctorPhone"
              placeholder="请输入ICU医生手机号"
            />
          </el-form-item>
        </div>
      </el-card>
      <!-- 转运信息 -->
      <el-card class="form-section" shadow="never">
      <el-card class="form-section paper-card" shadow="never">
        <div slot="header" class="section-header">
          <i
            class="el-icon-location-information"
@@ -179,30 +162,26 @@
          <span>转运信息</span>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="出发地点" prop="transportStartPlace">
              <el-input
                v-model="formData.transportStartPlace"
                placeholder="请输入出发地点"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="出发时间" prop="transportStartTime">
              <el-date-picker
                v-model="formData.transportStartTime"
                type="datetime"
                placeholder="选择出发时间"
                value-format="yyyy-MM-dd HH:mm:ss"
                style="width: 100%"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <div class="form-row">
          <el-form-item label="出发地点" prop="transportStartPlace" class="col-half">
            <el-input
              v-model="formData.transportStartPlace"
              placeholder="请输入出发地点"
            />
          </el-form-item>
          <el-form-item label="出发时间" prop="transportStartTime" class="col-half">
            <el-date-picker
              v-model="formData.transportStartTime"
              type="datetime"
              placeholder="选择出发时间"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
            />
          </el-form-item>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
        <div class="form-row">
          <!-- <el-col :span="12">
            <el-form-item label="转运状态" prop="transitStatus">
              <el-select
                v-model="formData.transitStatus"
@@ -216,20 +195,18 @@
                <el-option label="暂存" :value="5" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="负责协调员" prop="contactPerson">
              <el-input
                v-model="formData.contactPerson"
                placeholder="请输入协调员姓名"
              />
            </el-form-item>
          </el-col>
        </el-row>
          </el-col> -->
          <el-form-item label="负责协调员" prop="contactPerson" class="col-half">
            <el-input
              v-model="formData.contactPerson"
              placeholder="请输入协调员姓名"
            />
          </el-form-item>
        </div>
      </el-card>
      <!-- 医护人员信息 -->
      <el-card class="form-section" shadow="never">
      <el-card class="form-section paper-card" shadow="never">
        <div slot="header" class="section-header">
          <i
            class="el-icon-user"
@@ -238,31 +215,28 @@
          <span>医护人员信息</span>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="转运医生" prop="doctor">
              <el-input
                v-model="formData.doctor"
                placeholder="请输入转运医生"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
        <div class="form-row">
          <el-form-item label="转运医生" prop="doctor" class="col-half">
            <el-input
              v-model="formData.doctor"
              placeholder="请输入转运医生"
            />
          </el-form-item>
          <!-- <el-col :span="12">
            <el-form-item label="医生电话" prop="doctorPhone">
              <el-input
                v-model="formData.doctorPhone"
                placeholder="请输入医生手机号"
              />
            </el-form-item>
          </el-col>
        </el-row>
          </el-col> -->
          <el-form-item label="转运护士" prop="nurse" class="col-half">
            <el-input v-model="formData.nurse" placeholder="请输入护士姓名" />
          </el-form-item>
        </div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="转运护士" prop="nurse">
              <el-input v-model="formData.nurse" placeholder="请输入护士姓名" />
            </el-form-item>
          </el-col>
        <!-- <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="护士电话" prop="nursePhone">
              <el-input
@@ -271,28 +245,24 @@
              />
            </el-form-item>
          </el-col>
        </el-row>
        </el-row> -->
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="转运驾驶员" prop="driver">
              <el-input
                v-model="formData.driver"
                placeholder="请输入驾驶员姓名"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
        <div class="form-row">
          <el-form-item label="转运驾驶员" prop="driver" class="col-half">
            <el-input
              v-model="formData.driver"
              placeholder="请输入驾驶员姓名"
            />
          </el-form-item>
          <!-- <el-col :span="12">
            <el-form-item label="驾驶员电话" prop="driverPhone">
              <el-input
                v-model="formData.driverPhone"
                placeholder="请输入驾驶员手机号"
              />
            </el-form-item>
          </el-col>
        </el-row>
          </el-col> -->
        </div>
      </el-card>
      <!-- 附件信息 -->
@@ -391,7 +361,7 @@
      </el-card>
      <!-- 备注信息 -->
      <el-card class="form-section" shadow="never">
      <el-card class="form-section paper-card" shadow="never">
        <div slot="header" class="section-header">
          <i
            class="el-icon-edit"
@@ -399,16 +369,18 @@
          ></i>
          <span>备注信息</span>
        </div>
        <el-form-item prop="remark">
          <el-input
            v-model="formData.remark"
            type="textarea"
            :rows="4"
            placeholder="请输入备注信息"
            maxlength="500"
            show-word-limit
          />
        </el-form-item>
        <div class="form-row">
          <el-form-item prop="remark" class="col-full">
            <el-input
              v-model="formData.remark"
              type="textarea"
              :rows="4"
              placeholder="请输入备注信息"
              maxlength="500"
              show-word-limit
            />
          </el-form-item>
        </div>
      </el-card>
    </el-form>
@@ -430,7 +402,13 @@
</template>
<script>
import { transportAdd, transportEdit } from "@/api/businessApi/index";
import {
  transportAdd,
  transportEdit,
  donateInfo,
  donateList,
  donateEdit
} from "@/api/businessApi/index";
import UploadAttachment from "@/components/UploadAttachment";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import dayjs from "dayjs";
@@ -502,7 +480,6 @@
  watch: {
    editOpen(val) {
      if (val) {
        if (this.isEdit) {
          // 编辑模式,使用传入的转运单数据
@@ -552,7 +529,7 @@
        transportStartPlace: undefined,
        transportStartTime: undefined,
        contactPerson: undefined,
        transitStatus: 1,
        transitStatus: 2,
        doctor: undefined,
        doctorPhone: undefined,
        nurse: undefined,
@@ -573,7 +550,6 @@
    /** 用案例数据填充表单 */
    fillFormWithCaseData(caseData) {
      this.formData = {
        ...this.formData,
        caseNo: caseData.caseNo || "",
@@ -757,6 +733,7 @@
        this.saveLoading = true;
        const requestData = { ...this.formData };
        let response;
        if (this.isEdit) {
          response = await transportEdit(requestData);
@@ -768,6 +745,16 @@
          this.$message.success(this.isEdit ? "修改成功" : "新建成功");
          this.handleClose();
          this.$emit("save-success");
          if (requestData.transitStatus == 3) {
            const resappear = await donateInfo(requestData.reportId);
            if (resappear.code) {
              let obj = resappear.data;
              obj.isDonate = 1;
              await donateEdit(obj);
              this.$modal.msgSuccess(`对应上报案例已进入正式案例流程`);
            }
          }
        } else {
          this.$message.error(response.msg || "操作失败");
        }
@@ -843,4 +830,120 @@
.case-info-card {
  border-left: 4px solid #67c23a;
}
/* ===== 纸质表格网格样式 ===== */
.paper-card >>> .el-card__body {
  padding: 16px;
}
.paper-form {
  border-left: 1px solid #d0d3db;
  background: #fff;
  /* 超宽屏限制表单最大宽度,右侧留白,避免字段分布过开 */
  max-width: 1400px;
}
.paper-form >>> .form-row {
  display: flex;
  width: 100%;
  border-top: 1px solid #d0d3db;
  /* 上移1px与上一行的border-bottom重叠,两行之间只显示一条1px细线 */
  margin-top: -1px;
}
.paper-form >>> .form-row:first-child {
  margin-top: 0;
}
/* 行尾空白填充:不满整行的右侧自动补一个空白格子,网格保持闭合(右侧适当留白) */
.paper-form >>> .form-row::after {
  content: "";
  flex: 1 1 0;
  min-height: 42px;
  background: linear-gradient(to left, #d0d3db 1px, transparent 1px),
    linear-gradient(to top, #d0d3db 1px, transparent 1px);
  background-color: #fff;
}
.paper-form >>> .el-form-item {
  flex: 0 0 33.3333%;
  display: flex;
  margin: 0;
  background: #fff;
  border-right: 1px solid #d0d3db;
  border-bottom: 1px solid #d0d3db;
}
.paper-form >>> .el-form-item::after,
.paper-form >>> .el-form-item::before {
  display: none;
}
.paper-form >>> .col-1-3 { flex: 0 0 33.3333%; }
.paper-form >>> .col-half { flex: 0 0 50%; }
.paper-form >>> .col-2-3 { flex: 0 0 66.6666%; }
.paper-form >>> .col-full { flex: 0 0 100%; }
.paper-form >>> .el-form-item__label {
  flex: 0 0 150px;
  width: 150px !important;
  float: none;
  padding: 0 8px !important;
  background: #ecf5ff;
  border-right: 1px solid #d0d3db;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  color: #2c3038;
  line-height: 1.3;
  white-space: nowrap;
}
.paper-form >>> .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before {
  color: #f56c6c;
  margin-right: 2px;
}
.paper-form >>> .el-form-item__content {
  flex: 1;
  margin-left: 0 !important;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  padding: 6px 10px;
  background: #fff;
  min-height: 42px;
  line-height: 1.4;
}
/* 控件宽度适中,不铺满整格(内容短时输入框不再拉得很长) */
.paper-form >>> .el-form-item__content .el-input,
.paper-form >>> .el-form-item__content .el-select,
.paper-form >>> .el-form-item__content .el-cascader {
  width: 220px;
  max-width: 100%;
}
.paper-form >>> .el-form-item__content .el-date-editor {
  width: 240px;
  max-width: 100%;
}
.paper-form >>> .el-form-item__content .el-range-editor {
  width: 360px;
  max-width: 100%;
}
/* ===== TransportEdit 特殊适配:表单内有多个分区 el-card,每个分区各自独立成完整网格 ===== */
.paper-form {
  border: none;
  background: transparent;
}
.paper-form >>> .paper-card {
  border: none;
  box-shadow: none;
}
.paper-form >>> .paper-card >>> .el-card__body {
  border-top: 1px solid #d0d3db;
  border-left: 1px solid #d0d3db;
  background: #fff;
}
</style>