WXL (wul)
16 小时以前 80a72af5ffd14dda088a3b81d30084f41708bd1c
src/components/PatientSelection/index.vue
@@ -16,13 +16,13 @@
              closables
              @close="handleClose(item)"
            >
              {{ item.icdname }}
              {{ item.name }}
            </el-tag>
            <div style="margin-top: 20px; text-align: right">
              共选择<span
                style="font-size: 18px; color: #409eff; margin: 0 10px"
                >{{ overallCase.length }}</span
              >条数据
              >位患者
            </div>
          </el-card>
        </div>
@@ -36,12 +36,36 @@
              :inline="true"
              label-width="98px"
            >
              <el-form-item label="疾病名称" prop="name">
              <el-form-item label="患者:">
                <el-input
                  v-model="patientqueryParams.icdname"
                  placeholder="请输入疾病名称"
                  @keyup.enter.native="handleAddpatient"
                />
                  v-model="patientqueryParams.name"
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <el-form-item label="患者类型">
                <el-select
                  v-model="patientqueryParams.allhosp"
                  placeholder="请选择新增类型"
                >
                  <el-option
                    v-for="item in taskoptions"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="患者诊断:">
                <el-input
                  v-model="patientqueryParams.leavediagname"
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <el-form-item label="主治医生:">
                <el-input
                  v-model="patientqueryParams.drname"
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <el-form-item>
@@ -49,7 +73,7 @@
                  type="primary"
                  icon="el-icon-search"
                  size="medium"
                  @click="handleAddpatient"
                  @click="handleQuery"
                  >搜索</el-button
                >
                <el-button
@@ -60,7 +84,7 @@
                >
              </el-form-item>
            </el-form>
            <!-- 选择器官列表 -->
            <!-- 选择患者列表 -->
            <el-table
              ref="multipleTable"
              :data="donorchargeList"
@@ -68,21 +92,49 @@
              style="width: 100%"
              @selection-change="handleSelectionChange"
            >
              <el-table-column class="checkall" type="selection" width="55">
              </el-table-column>
              <el-table-column
                prop="icdid"
                label="疾病编号"
                width="100"
                show-overflow-tooltip
                fixed="left"
                class="checkall"
                type="selection"
                width="55"
              >
              </el-table-column>
              <el-table-column label="疾病名称" show-overflow-tooltip>
                <template slot-scope="scope">{{ scope.row.icdname }}</template>
              </el-table-column>
              <div v-for="(item, index) in tableLabel">
                <el-table-column
                  v-if="item.label == '出院日期'"
                  :key="index"
                  :prop="item.prop"
                  :width="item.width"
                  :label="item.label"
                  :formatter="formatData"
                >
                  <template slot-scope="scope">
                    <span>{{ formatTime(scope.row.endtime) }}</span>
                  </template>
                </el-table-column>
                <el-table-column
                  v-if="item.label == '性别'"
                  :key="index"
                  :prop="item.prop"
                  :width="item.width"
                  :label="item.label"
                  :formatter="formatData"
                >
                  <template slot-scope="scope">
                    <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
                  </template>
                </el-table-column>
              <el-table-column prop="icdcode" label="疾病编码" width="150">
              </el-table-column>
                <el-table-column
                  v-if="item.label != '性别' && item.label != '出院日期'"
                  :key="index"
                  :prop="item.prop"
                  :width="item.width"
                  :label="item.label"
                  :formatter="formatData"
                >
                </el-table-column>
              </div>
            </el-table>
          </el-row>
          <pagination
@@ -90,7 +142,7 @@
            :total="patienttotal"
            :page.sync="patientqueryParams.pageNum"
            :limit.sync="patientqueryParams.pageSize"
            @pagination="handleAddpatient"
            @pagination="handleQuery"
          />
        </div>
      </div>
@@ -105,22 +157,71 @@
</template>
<script>
import { getillnesslist, deltargetillness } from "@/api/AiCentre/index";
import {
  getillnesslist,
  deltargetillness,
  getTaskpatientQC,
  Questionnairetaskgetson,
  Externallist,
  Editsingletask,
} from "@/api/AiCentre/index";
export default {
  name: "Diseasetotality",
  data() {
    return {
      patienttotal: 0, //
      allpids: [],
      // 当前页选中数据
      multipleSelection: [],
      // 总选中数据
      // overallCase: [],
      overallpatin: [],
      form: {},
      patientqueryParams: {
        pageNum: 1,
        pageSize: 10,
        allhosp: "4",
        pids: null,
      },
      donorchargeList: [],
      donorchargeanlList: [], //案例列表
      taskoptions: [
        {
          value: "4",
          label: "出院病人",
        },
        {
          value: "1",
          label: "在院病人",
        },
        {
          value: "2",
          label: "门诊病人",
        },
        {
          value: "3",
          label: "体检病人",
        },
        {
          value: "6",
          label: "院外患者",
        },
        {
          value: "5",
          label: "手术病人",
        },
      ],
      overallCase:[],
      tableLabel: [
        { label: "出院日期", width: "150", prop: "inhosptime" },
        { label: "患者", width: "", prop: "name" },
        { label: "患者诊断", width: "", prop: "leavediagname" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "240", prop: "dept" },
        { label: "病区", width: "240", prop: "leavehospitaldistrictname" },
      ],
    };
  },
@@ -131,22 +232,7 @@
        return false;
      },
    },
    // 选中
    overallCase: {
      type: Array,
      required: true,
      default: () => [],
    },
    pids: {
      type: Array,
      required: true,
      default: () => [],
    },
    allhosp: {
      type: String,
      required: true,
      default: () => [],
    },
    // 5问卷模板、3随访模板、6宣教
    type: {
      type: Number,
@@ -165,6 +251,25 @@
  watch: {},
  methods: {
    //   数据过滤
    formatData(row, column, cellValue) {
      if (column.property === "createType") {
        if (cellValue === 1) {
          return "自动";
        }
        return "手动";
      }
      if (
        column.property === "createTime" ||
        column.property === "inhosptime"
      ) {
        if (cellValue === null) {
          return "";
        }
        return dayjs(cellValue).format("YYYY-MM-DD ");
      }
      return cellValue;
    },
    handleClosehz() {
      this.$emit("addoption");
    },
@@ -172,7 +277,6 @@
    handleClose(item) {
      console.log(item);
      if (this.multipleSelection.indexOf(item) == -1 && !item.outid) {
        console.log(1);
        this.overallCase.splice(this.overallCase.indexOf(item), 1);
      } else if (item.outid) {
        this.$modal
@@ -200,17 +304,118 @@
      }
    },
    resetQuery() {
      this.patientqueryParams.icdname = null;
      this.patientqueryParams.name = null;
      this.handleAddpatient();
    },
    // 触发查询事件
    handleAddpatient(row) {
    handleAddpatients() {
      this.$emit("kkoption");
      getillnesslist(this.patientqueryParams).then((res) => {
        this.donorchargeList = res.rows;
        this.patienttotal = res.total;
        this.Restorecheck();
      });
    },
    // 触发查询事件
    handleAddpatient(taskid) {
      this.$emit("kkoption");
      if (taskid != this.taskid) {
        this.recover();
      }
      if (taskid) {
        this.taskid = taskid;
        Questionnairetaskgetson({ taskid: this.taskid }).then((res) => {
          if (res.code == 200) {
            this.form = res.data;
            this.overallpatin = this.form.patTaskRelevances.concat();
            this.allpids = [];
            this.overallpatin.forEach((item) => {
              this.allpids.push(item.patid);
            });
            if (this.allpids[0]) {
              this.patientqueryParams.pids = this.allpids;
            } else {
              this.patientqueryParams.pids = null;
            }
            this.handleQuery();
          }
        });
      }
    },
    handleQuery() {
      // 获取外部患者
      if (this.patientqueryParams.allhosp == 6) {
        this.Externallist();
        return;
      }
      console.log(11);
      if (this.patientqueryParams.allhosp == 4) {
        this.tableLabel = [
          // { label: "入院日期", width: "170", prop: "starttime" },
          { label: "出院日期", width: "150", prop: "endtime" },
          { label: "患者", width: "", prop: "name" },
          { label: "患者诊断", width: "", prop: "leavediagname" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "出院天数", width: "", prop: "endDay" },
          { label: "责任护士", width: "", prop: "nurseName" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "dept" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        ];
      } else if (this.patientqueryParams.allhosp == 1) {
        this.tableLabel = [
          { label: "入院日期", width: "150", prop: "starttime" },
          { label: "患者", width: "", prop: "name" },
          { label: "患者诊断", width: "", prop: "leavediagname" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "出院天数", width: "", prop: "endDay" },
          { label: "责任护士", width: "", prop: "nurseName" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "dept" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        ];
      }
      console.log(this.patientqueryParams.allhosp);
      // 获取患者数据
      getTaskpatientQC(this.patientqueryParams).then((response) => {
        this.donorchargeList = response.rows;
        this.donorchargeList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
        });
        this.Restorecheck();
        this.patienttotal = response.total;
      });
    },
    // 获取外部患者导入列表
    Externallist() {
      this.tableLabel = [
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "出院天数", width: "", prop: "endDay" },
      ];
      this.patientqueryParams.pageSize = 1000;
      Externallist(this.patientqueryParams).then((response) => {
        this.donorchargeList = response.rows;
        this.donorchargeList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
        });
        // this.dialogVisiblepatient = true;
        this.patienttotal = response.total;
      });
    },
    // 多选框选中数据
@@ -241,8 +446,19 @@
      }
      // 赋值给整体选中数组
      this.multipleSelection.forEach((item) => {
        if (this.overallCase.every((obj) => obj.icdname != item.icdname)) {
        if (this.overallCase.every((obj) => obj.name != item.name)) {
          item.isoperation = 1;
          item.patid = item.id;
          item.hospType = this.patientqueryParams.allhosp;
          item.sfzh = item.idcardno;
          item.deptCode = item.deptcode;
          item.deptName = item.dept;
          item.admindate = item.inhosptime;
          item.diagname = item.leavediagname;
          item.sfzh = item.idcardno;
          if (this.patientqueryParams.allhosp == 6) {
            item.patfrom = 1;
          }
          this.overallCase.push(item);
        }
      });
@@ -251,9 +467,9 @@
    // 切换页后恢复选中
    Restorecheck() {
      console.log(this.overallCase, "this.overallCase");
      const allid = this.overallCase.map((item) => item.icdname);
      const allid = this.overallCase.map((item) => item.name);
      const overlap = this.donorchargeList.filter((value) => {
        return allid.includes(value.icdname);
        return allid.includes(value.name);
      });
      // 保持ids和当前页面的同步性
      this.multipleSelection = overlap;
@@ -277,7 +493,40 @@
      }
    },
    AddDispatchpatients() {
      console.log(this.overallCase);
      this.form.patTaskRelevances.push(...this.overallCase);
      console.log(this.form.patTaskRelevances);
      this.form.isoperation=2;
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
            this.$modal.msgSuccess("修改成功");
          } else {
            this.$modal.msgSuccess("新增成功");
          }
          this.recover();
      this.$emit("addoption");
        }
      });
      // this.dialogVisiblepatient = false;
      // this.$emit("addoption");
    },
    recover() {
      this.donorchargeList = [];
      this.donorchargeanlList = [];
      this.multipleSelection = [];
      this.allpids = [];
      this.overallpatin = [];
      this.form = {};
      this.patientqueryParams = {
        pageNum: 1,
        pageSize: 10,
        allhosp: "4",
        pids: null,
      };
      this.overallCase = [];
      // this.dialogVisiblepatient = false;
    },
  },
};