wwl
2025-03-24 009a117ddee0ec3e720f7535c210ef9a4a9f4c94
src/views/doctor/checkAll/index.vue
@@ -96,19 +96,16 @@
    </template>
    <!-- 点击弹出框 -->
    <el-drawer custom-class="tanchu" :visible.sync="drawer" :before-close="handleClose" :with-header="false" size="100%"
      show-close="true">
    <el-drawer custom-class="tanchu"
  :visible.sync="drawer"
  :before-close="handleClose"
  :with-header="false"
  size="100%"
  :show-close="true">
      <div class="top">
        <table style="
            width: 100%;
            margin: 10px 10px;
            border: 1px solid #dfe6ec;
            border-collapse: collapse;
          " cellspacing="4">
    <table style="width: 100%; margin: 10px 10px; border: 1px solid #dfe6ec; border-collapse: collapse;" cellspacing="4">
          <caption style="background-color: #f8f8f9; font-size: 18px">
            {{
              tableAll.cusName
            }}的体检资料
        {{ tableAll.cusName }}的体检资料
          </caption>
          <tr style="
              border: 1px solid #dfe6ec;
@@ -502,6 +499,7 @@
                </el-table>
              </div>
            </template>
            <el-button type="primary" @click="addnew" :disabled="isdisabled">新增</el-button>
          </div>
        </div>
      </div>
@@ -719,6 +717,50 @@
        <el-button @click="jianqians = false">取 消</el-button>
      </span>
    </el-dialog>
    <el-dialog title="新增异常结果" :visible.sync="addNewDialogVisible" width="900px" :before-close="handleAddNewClose"
      class="custom-dialog">
      <el-form :model="newItem" ref="newItemForm" label-width="100px" class="custom-form">
        <el-form-item label="项目分类" prop="parentName">
          <el-select v-model="newItem.parentName" placeholder="请选择项目分类" clearable filterable
            @change="handleCategoryChange">
            <el-option v-for="item in projectCategories" :key="item.proId" :label="item.proName"
              :value="item.proName" />
          </el-select>
        </el-form-item>
        <el-form-item label="检测项目" prop="jcxm">
          <el-input v-model="newItem.jcxm" placeholder="请输入检测项目或从分类选择" clearable></el-input>
        </el-form-item>
        <el-form-item label="检测结果" prop="jcjg">
          <el-input v-model="newItem.jcjg" placeholder="请输入检测结果" clearable></el-input>
        </el-form-item>
        <el-form-item label="参考范围" prop="ckfw">
          <el-input v-model="newItem.ckfw" placeholder="请输入参考范围" clearable></el-input>
        </el-form-item>
        <el-form-item label="单位" prop="dw">
          <el-input v-model="newItem.dw" placeholder="请输入单位" clearable></el-input>
        </el-form-item>
        <!-- 动态建议组 -->
        <div v-for="(advice, index) in newItem.map" :key="index" class="advice-group">
          <el-form-item label="建议标题" :prop="'map.' + index + '.bt'">
            <el-input v-model="advice.bt" placeholder="请输入建议标题" clearable></el-input>
          </el-form-item>
          <el-form-item label="建议内容" :prop="'map.' + index + '.nr'">
            <el-input v-model="advice.nr" type="textarea" rows="3" placeholder="请输入建议内容" resize="none"></el-input>
          </el-form-item>
          <el-button v-if="index > 0" type="danger" size="small" @click="removeAdvice(index)"
            style="margin-left: 100px; margin-bottom: 10px;">删除</el-button>
        </div>
        <el-form-item>
          <el-button type="primary" size="small" @click="addAdvice" style="margin-left: 100px;">添加建议</el-button>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addNewDialogVisible = false">取消</el-button>
        <el-button type="primary" @click="submitNewItem">确定</el-button>
      </span>
    </el-dialog>
    <Packages ref="bbb" :baogao="baogao" />
    <Prescription ref="Pre" :preObj="preObj" />
    <proposal ref="proposal" :cusobj="cusobj" @event1="eventchange($event)" />
@@ -749,6 +791,7 @@
  getModified,
  isPdfOrJimu,
  addOrder,
  addOrder1
} from "@/api/doctor/checkAll";
import { getInfoById } from "@/api/hosp/history";
import { getInfo } from "@/api/login";
@@ -789,6 +832,19 @@
  name: "checkAll",
  data() {
    return {
      addNewDialogVisible: false,
      newItem: {
        parentName: '',   // 项目分类,对应模板中的 parentName
        jcxm: '',         // 检测项目,对应模板中的 jcxm
        jcjg: '',         // 检测结果,对应模板中的 jcjg
        ckfw: '',         // 参考范围,对应模板中的 ckfw
        dw: '',           // 单位,对应模板中的 dw
        map: [{           // 建议列表,对应模板中的动态建议组 map
          bt: '',         // 建议标题,对应模板中的 map[index].bt
          nr: ''          // 建议内容,对应模板中的 map[index].nr
        }]
      },
      projectCategories: [],
      // 更新总检建议
      emptyAdvice: {
        bt: "",
@@ -940,6 +996,82 @@
    });
  },
  methods: {
    submitNewItem() {
      const data = {
        tjh: this.tableAll.tjNumber, // 体检号,从 tableAll 中获取
        parentName: this.newItem.parentName,
        jcxm: this.newItem.jcxm,
        jcjg: this.newItem.jcjg,
        ckfw: this.newItem.ckfw,
        dw: this.newItem.dw,
        map: this.newItem.map,
        jyjc: this.newItem.ckfw ? "0" : "1"
      };
      addOrder1(data).then((res) => {
        console.log(res);
        if (res.code === 200) {
          this.$message.success('新增异常结果成功');
          this.addNewDialogVisible = false;
          this.yichangjieguo();
        } else {
          this.$message.error('新增失败');
        }
      }).catch((error) => {
        console.error('新增异常结果失败:', error);
        this.$message.error('新增异常结果失败');
      });
    },
    addnew() {
      this.newItem = {
        parentName: '',
        jcxm: '',
        jcjg: '',
        ckfw: '',
        dw: '',
        map: [{ bt: '', nr: '' }]
      };
      this.addNewDialogVisible = true;
      cSWebGetPro(this.tjNumber).then((res) => {
        console.log(res);
        if (res.data && Array.isArray(res.data)) {
          this.projectCategories = res.data;
        } else {
          this.$message.warning('未获取到项目分类数据');
          this.projectCategories = [];
        }
      }).catch((error) => {
        console.error('获取项目分类失败:', error);
        this.$message.error('获取项目分类失败');
        this.projectCategories = [];
      });
    },
    handleCategoryChange(value) {
      if (value) {
        this.newItem.jcxm = value; // 将选择的项目分类赋值给检测项目
      }
    },
    handleAddNewClose(done) {
      // this.$confirm('确定关闭新增窗口吗?未保存的数据将丢失。')
      //   .then(() => done())
      //   .catch(() => { });
    },
    // 添加新的建议组
    addAdvice() {
      this.newItem.map.push({ bt: '', nr: '' });
    },
    removeAdvice(index) {
      if (this.newItem.map.length > 1) {
        this.newItem.map.splice(index, 1);
      } else {
        this.$message.warning('至少保留一组建议');
      }
    },
    shanchu(row) {
      shanchu({
        id: row.orderDetailId,
@@ -993,7 +1125,7 @@
    },
    getRowKeys(row) {
      return row.proId;
      return row.orderDetailId;
    },
    // 项目情况
    xiangmuqingkuang() {
@@ -2282,4 +2414,47 @@
::v-deep .el-drawer {
  padding: 0 0 50px;
}
.custom-dialog {
  ::v-deep .el-dialog__header {
    padding: 15px 20px;
    background-color: #f5f7fa;
    border-bottom: 1px solid #e8ecef;
  }
  ::v-deep .el-dialog__title {
    font-size: 18px;
    color: #303133;
    font-weight: 600;
  }
  ::v-deep .el-dialog__body {
    padding: 20px; // 增加内边距
    background-color: #fff;
  }
  ::v-deep .el-dialog__footer {
    padding: 10px 20px;
    border-top: 1px solid #e8ecef;
    text-align: right;
  }
  .custom-form {
    .advice-group {
      border: 1px solid #e8ecef;
      border-radius: 4px;
      padding: 10px;
      margin-bottom: 15px;
      background-color: #f9fbfc;
      .el-form-item {
        margin-bottom: 15px;
      }
      .el-button {
        margin-top: 5px;
      }
    }
  }
}
</style>