1
lkk
2025-04-27 1bff9afb2dfda9824c3956c4a491a1b2261ad306
src/views/doctor/check/index.vue
@@ -36,7 +36,8 @@
          </template>
        </el-table-column>
        <el-table-column label="出生日期" align="center" prop="cusBrithday" width="100px" />
        <el-table-column label="电话" align="center" prop="cusPhone" width="100px" />
        <el-table-column label="套餐名称" align="center" prop="pacName" width="100px" />
        <!-- <el-table-column label="电话" align="center" prop="cusPhone" width="100px" /> -->
        <el-table-column label="体检类型" align="center" prop="tjType" width="80px" />
        <el-table-column label="登记时间" align="center" prop="tjTime" width="160px">
        </el-table-column>
@@ -274,27 +275,25 @@
        <el-col v-show="baogaoqian">
          <template>
            <el-tabs v-model="radio" type="border-card" @tab-click="handleTabClick" style="margin-left: 10px">
              <el-tab-pane :label="item.proName" :name="item.proId" v-for="(item, index) in Parent" :key="index">
              <el-tab-pane :label="item.proName" :name="item.proId" v-for="(item, index) in Parent" :key="index"
                :lazy="false">
                <el-table class="bgc" v-loading="loading" :data="proParentList.sons" border height="460px"
                  style="width: 96%; margin: 10px 10px" :row-class-name="tableRowClassName">
                  <el-table-column prop="project.proName" label="检测项目" width="150">
                  </el-table-column>
                  <el-table-column prop="proResult" label="检测结果" width="150">
                    <!-- <template slot-scope="scope">
                      <el-input type="textarea" autosize size="mini" v-model="scope.row.proResult" autocomplete="off"
                        placeholder="请输入检测结果" @keyup.enter.native="
                          keyInputConfirm($event,scope.$index,'proResult')
                          " @focus="handleFocus(scope.row)" @blur="handleInputConfirm(scope.row)"
                        @input="vale"></el-input> -->
                    <template slot-scope="{ row, $index }">
                      <el-input v-model="row.name" :ref="`input-${$index}`"
                        @keyup.enter.native="keyInputConfirm($event, $index)" @focus="handleFocus(row)"
                      <el-input type="textarea" autosize size="mini" v-model="row.proResult"
                        :ref="`input-item${index}-row${$index}`"
                        @keydown.enter.native="keyInputConfirm($event, index, $index)" @focus="handleFocus(row)"
                        @blur="handleInputConfirm(row)" @input="vale"></el-input>
                    </template>
                  </el-table-column>
                  <el-table-column prop="exceptionDesc" label="异常" width="55px" align="center">
                    <template slot-scope="scope">
                      <el-checkbox v-model="scope.row.exceptionDesc" @change="changDesc(scope.row)"></el-checkbox>
                      <el-checkbox v-model="scope.row.exceptionDesc" @change="changDesc(scope.row)"
                        :disabled="scope.row.project.sfcyyc === 1"></el-checkbox>
                    </template>
                  </el-table-column>
                  <el-table-column label="规则" width="70">
@@ -419,7 +418,8 @@
        <el-col :span="18" v-show="baogaohou">
          <template>
            <el-tabs v-model="radio" type="border-card" @tab-click="handleTabClick" style="margin-left: 10px">
              <el-tab-pane :label="item.proName" :name="item.proId" v-for="(item, index) in Parent" :key="index">
              <el-tab-pane :label="item.proName" :name="item.proId" v-for="(item, index) in Parent" :key="index"
                :lazy="false">
                <el-table class="bgc" v-loading="loading" :data="proParentList.sons" border height="460px"
                  style="width: 96%; margin: 10px 10px" :row-class-name="tableRowClassName">
                  <el-table-column prop="project.proName" label="检测项目" width="100">
@@ -427,10 +427,11 @@
                  <el-table-column prop="proResult" label="检测结果" width="150">
                    <!-- slot-scope="scope" -->
                    <template slot-scope="{ row, $index }">
                      <el-input v-model="row.name" :ref="`input-${$index}`"
                        @keyup.enter.native="keyInputConfirm($event, $index)" @focus="handleFocus(row)"
                        @blur="handleInputConfirm(row)" @input="vale"></el-input>
                      <el-input type="textarea" autosize size="mini" v-model="row.proResult"
                        :ref="`input-item${index}-row${$index}`"
                        @keydown.enter.native="keyInputConfirm($event, index, $index)" @focus="handleFocus(row)"
                        @blur="handleInputConfirm(row)"></el-input>
                      <!-- @input="vale" -->
                      <!-- <el-input type="textarea" autosize size="mini" v-model="scope.row.proResult" autocomplete="off"   :ref="`input-${scope.$index}-${scope.row.proResult}`"
                        placeholder="请输入检测结果" @keyup="
                          keyInputConfirm($event,scope.$index,'proResult')
@@ -450,7 +451,8 @@
                  <el-table-column prop="exceptionDesc" label="异常" width="55px" align="center">
                    <template slot-scope="scope">
                      <el-checkbox v-model="scope.row.exceptionDesc"></el-checkbox>
                      <el-checkbox v-model="scope.row.exceptionDesc" :disabled="scope.row.project.sfcyyc === 1"
                        @change="changDesc(scope.row)"></el-checkbox>
                    </template>
                  </el-table-column>
                  <el-table-column prop="isReturn" label="复诊" width="55px" align="center">
@@ -813,6 +815,7 @@
import { getlistUser } from "@/api/system/user";
import { getChildList } from "@/api/system/dept";
import { resultList } from "@/api/doctor/examination";
import { selectZT } from "@/api/system/package";
import { get } from "sortablejs";
export default {
  dicts: ["sys_user_sex", "sys_yes_no", "tj_result_type", "lj_positive"],
@@ -919,7 +922,6 @@
      radio: "",
      nums: "",
      proParentList: [],
      inputDoms: [],
      tjNumber: "",
      // 全部小结
      DeptadviceAll: [],
@@ -989,15 +991,23 @@
  methods: {
    handleFocus(row) {
      this.autorule = [];
      if (!row.resultType || row.resultType == 2) {
        return;
      } else {
        this.curindex = row;
        this.$refs.bbb.title = "选择检测结果";
        // this.$refs.bbb.proId = row.proId;
        this.$refs.bbb.open = true;
        this.$refs.bbb.getList(this.curindex);
        selectZT({
          proId: row.proId,
        }).then((res) => {
          if (res.data.length > 0) {
            this.$refs.bbb.title = "选择检测结果";
            // this.$refs.bbb.proId = row.proId;
            this.$refs.bbb.open = true;
            this.$refs.bbb.getList(this.curindex);
          } else {
            this.$refs.bbb.open = false;
          }
        });
      }
    },
    handleChangesZt(params) {
@@ -1067,7 +1077,6 @@
      const proId = row.proId;
      resultList(tjNum, proId).then((res) => {
        this.jieguoList = res.data;
        console.log(this.jieguoList, 998877);
        this.jyjc = this.jieguoList[0].jyjc;
        const ycbz = this.jieguoList[0].ycbz;
@@ -1201,7 +1210,9 @@
      });
    },
    handleClose() {
      this.$tab.refreshPage();
      // 只刷新表格数据
      this.getList();
      this.drawer = false;
    },
    handleClose1() {
      this.jianqians = false;
@@ -1217,7 +1228,6 @@
    },
    changDesc(item) {
      console.log(item)
      if (item.exceptionDesc == true) {
        item.conclusion = "异常"
      } else {
@@ -1283,28 +1293,27 @@
      this.inputDoms = inputDoms
      // console.log(this.inputDoms)
    },
    keyInputConfirm(event, currentRowIndex) {
    keyInputConfirm(event, index, currentRowIndex) {
      // 阻止默认回车行为,比如提交表单
      event.preventDefault();
      event.stopPropagation()
      const nextRowIndex = currentRowIndex + 1; // 计算下一行索引
      // 如果下一行存在,则聚焦该行的输入框
      if (nextRowIndex < this.proParentList.sons.length) {
        this.$nextTick(() => {
          const nextInputRef = `input-${nextRowIndex}`;
          const nextInputRef = `input-item${index}-row${nextRowIndex}`;
          const nextInput = this.$refs[nextInputRef];
          if (nextInput) {
            // 处理 ref 可能为数组的情况(如动态渲染)
            const target = Array.isArray(nextInput) ? nextInput[0] : nextInput;
            target.focus(); // 聚焦输入框
            target.select(); // 可选:选中文本
            // target.select(); // 可选:选中文本
          }
        });
      }
    },
    handleInputConfirm(datas, params) {
      if (params && params.length === 0) {
        // 如果没有选中任何项目,取消异常复选框的选中状态
        this.curindex.exceptionDesc = false;
@@ -1332,20 +1341,24 @@
            if (res.data) {
              this.autorule = res.data;
              this.focusrow.rulesList = res.data;
              if (res.data.length > 0) {
                const conditions = ["正常", "未见异常", "阴性", "未见明显异常"];
                this.focusrow.exceptionDesc = !conditions.some((condition) =>
                  this.autorule[0].bz.includes(condition)
                );
              if (row.project.sfcyyc == 1) {
                return
              } else {
                this.focusrow.exceptionDesc = false;
                if (res.data.length > 0) {
                  const conditions = ["正常", "未见异常", "阴性", "未见明显异常"];
                  this.focusrow.exceptionDesc = !conditions.some((condition) =>
                    this.autorule[0].bz.includes(condition)
                  );
                } else {
                  this.focusrow.exceptionDesc = false;
                }
              }
              if(this.autorule.length != 0){
                if( this.autorule[0]||this.autorule[0].nr){
                this.focusrow.proAdvice = this.autorule[0].nr;
              if (this.autorule.length != 0) {
                if (this.autorule[0] || this.autorule[0].nr) {
                  this.focusrow.proAdvice = this.autorule[0].nr;
                }
              }
              }
              this.autorule.forEach((item) => {
                if (this.focusrow.conclusion) {
                  this.focusrow.conclusion += item.bz;
@@ -1368,21 +1381,25 @@
            if (res.data) {
              this.autorule = res.data;
              this.focusrow.rulesList = res.data;
              if (res.data.length > 0) {
                const conditions = ["正常", "未见异常", "阴性", "未见明显异常"];
                this.focusrow.exceptionDesc = !conditions.some((condition) =>
                  this.autorule[0].bz.includes(condition)
                );
              if (row.project.sfcyyc == 1) {
                return
              } else {
                this.focusrow.exceptionDesc = false;
                if (res.data.length > 0) {
                  const conditions = ["正常", "未见异常", "阴性", "未见明显异常"];
                  this.focusrow.exceptionDesc = !conditions.some((condition) =>
                    this.autorule[0].bz.includes(condition)
                  );
                } else {
                  this.focusrow.exceptionDesc = false;
                }
              }
              if(this.autorule.length != 0){
                if( this.autorule[0]||this.autorule[0].nr){
                this.focusrow.proAdvice = this.autorule[0].nr;
              if (this.autorule.length != 0) {
                if (this.autorule[0] || this.autorule[0].nr) {
                  this.focusrow.proAdvice = this.autorule[0].nr;
                }
              }
              }
              this.autorule.forEach((item) => {
                if (this.focusrow.conclusion) {
                  this.focusrow.conclusion += item.bz;
@@ -1812,7 +1829,11 @@
      // }
      this.tjNumber = row.tjNumber;
      let num = 0;
      getParentList(this.tjNumber).then((response) => {
      let data = {
        type: this.tjStatus,
        tjNumber: this.tjNumber
      }
      getParentList(data).then((response) => {
        if (response.data) {
          this.loading = false;
          this.Parent = response.data;
@@ -2316,7 +2337,10 @@
    // 点击确认
    determine() {
      // 体检号
      // 清空数组
      this.tjOrderDetail = [];
      // 原有代码
      let tjNumber = this.tableAll.tjNumber;
      this.userList.forEach((item) => {
        if (this.doctorName == item.nickName) {