From 66cc734e81fe0497d88e0951b6aee9c9c8342f2c Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 17 九月 2025 11:43:07 +0800
Subject: [PATCH] 电话更新

---
 src/components/PatientSelection/index.vue |  585 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 585 insertions(+), 0 deletions(-)

diff --git a/src/components/PatientSelection/index.vue b/src/components/PatientSelection/index.vue
new file mode 100644
index 0000000..d63746e
--- /dev/null
+++ b/src/components/PatientSelection/index.vue
@@ -0,0 +1,585 @@
+<template>
+  <div>
+    <el-dialog
+      title="娲惧彂鎮h�呴�夋嫨"
+      :visible.sync="dialogVisiblepatient"
+      width="70%"
+      :before-close="handleClosehz"
+    >
+      <div class="examine-jic">
+        <div style="margin: 0 10px 20px 10px">
+          <el-card class="box-card">
+            <el-tag
+              v-for="item in overallCase"
+              :key="item.icdid"
+              type="primary"
+              closables
+              @close="handleClose(item)"
+            >
+              {{ 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>
+        <div class="jic-value">
+          <el-row :gutter="20">
+            <!--鐢ㄦ埛鏁版嵁-->
+            <el-form
+              :model="patientqueryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              label-width="98px"
+            >
+              <el-form-item label="鎮h�咃細">
+                <el-input
+                  v-model="patientqueryParams.name"
+                  @keyup.enter.native="handleQuery"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="鎮h�呯被鍨�">
+                <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="鎮h�呰瘖鏂細">
+                <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>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetQuery"
+                  >閲嶇疆</el-button
+                >
+              </el-form-item>
+            </el-form>
+            <!-- 閫夋嫨鎮h�呭垪琛� -->
+            <el-table
+              ref="multipleTable"
+              :data="donorchargeList"
+              tooltip-effect="dark"
+              style="width: 100%"
+              @selection-change="handleSelectionChange"
+            >
+              <el-table-column
+                fixed="left"
+                class="checkall"
+                type="selection"
+                width="55"
+              >
+              </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
+                  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
+            v-show="patienttotal > 0"
+            :total="patienttotal"
+            :page.sync="patientqueryParams.pageNum"
+            :limit.sync="patientqueryParams.pageSize"
+            @pagination="handleQuery"
+          />
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="$emit('addoption')">鍙� 娑�</el-button>
+        <el-button type="primary" @click="AddDispatchpatients"
+          >纭畾娣诲姞</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getillnesslist,
+  deltargetillness,
+  getTaskpatientQC,
+  Questionnairetaskgetson,
+  Externallist,
+  Editsingletask,
+} from "@/api/AiCentre/index";
+export default {
+  name: "Diseasetotality",
+  data() {
+    return {
+      patienttotal: 0, //
+      allpids: [],
+      // 褰撳墠椤甸�変腑鏁版嵁
+      multipleSelection: [],
+      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: "闄㈠鎮h��",
+        },
+        {
+          value: "5",
+          label: "鎵嬫湳鐥呬汉",
+        },
+      ],
+      overallCase:[],
+      tableLabel: [
+        { label: "鍑洪櫌鏃ユ湡", width: "150", prop: "inhosptime" },
+        { label: "鎮h��", width: "", prop: "name" },
+        { label: "鎮h�呰瘖鏂�", width: "", prop: "leavediagname" },
+        { label: "韬唤璇�", width: "200", prop: "idcardno" },
+        { label: "鎬у埆", width: "", prop: "sex" },
+        { label: "骞撮緞", width: "", prop: "age" },
+        { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
+        { label: "涓绘不鍖荤敓", width: "", prop: "drname" },
+        { label: "绉戝", width: "240", prop: "dept" },
+        { label: "鐥呭尯", width: "240", prop: "leavehospitaldistrictname" },
+      ],
+    };
+  },
+
+  props: {
+    dialogVisiblepatient: {
+      type: Boolean,
+      default: () => {
+        return false;
+      },
+    },
+
+    // 5闂嵎妯℃澘銆�3闅忚妯℃澘銆�6瀹f暀
+    type: {
+      type: Number,
+      default: () => {
+        return 5;
+      },
+    },
+  },
+
+  created() {},
+
+  mounted() {
+    // this.handleAddpatient();
+  },
+
+  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");
+    },
+    // 閫夋嫨鏁版嵁鏍囩鍒犻櫎浜嬩欢
+    handleClose(item) {
+      console.log(item);
+      if (this.multipleSelection.indexOf(item) == -1 && !item.outid) {
+        this.overallCase.splice(this.overallCase.indexOf(item), 1);
+      } else if (item.outid) {
+        this.$modal
+          .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + item.icd10name + '"鐨勬暟鎹」锛�')
+          .then(() => {
+            this.multipleSelection.splice(
+              this.multipleSelection.indexOf(item),
+              1
+            );
+            deltargetillness(item.id).then((res) => {
+              if (res.code == 200) {
+                this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+                this.overallCase.splice(this.overallCase.indexOf(item), 1);
+              }
+            });
+            // 鍙栨秷鎸傝浇鐘舵��
+            this.$refs.multipleTable.toggleRowSelection(item, false);
+          })
+          .catch(() => {});
+      } else {
+        this.overallCase.splice(this.overallCase.indexOf(item), 1);
+        this.multipleSelection.splice(this.multipleSelection.indexOf(item), 1);
+        // 鍙栨秷鎸傝浇鐘舵��
+        this.$refs.multipleTable.toggleRowSelection(item, false);
+      }
+    },
+    resetQuery() {
+      this.patientqueryParams.name = null;
+      this.handleAddpatient();
+    },
+    // 瑙﹀彂鏌ヨ浜嬩欢
+    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() {
+      // 鑾峰彇澶栭儴鎮h��
+      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: "鎮h��", width: "", prop: "name" },
+          { label: "鎮h�呰瘖鏂�", width: "", prop: "leavediagname" },
+          { label: "韬唤璇�", width: "200", prop: "idcardno" },
+          { label: "鎬у埆", width: "", prop: "sex" },
+          { label: "骞撮緞", width: "", prop: "age" },
+          { label: "鍑洪櫌澶╂暟", width: "", prop: "endDay" },
+          { label: "璐d换鎶ゅ+", 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: "鎮h��", width: "", prop: "name" },
+          { label: "鎮h�呰瘖鏂�", width: "", prop: "leavediagname" },
+          { label: "韬唤璇�", width: "200", prop: "idcardno" },
+          { label: "鎬у埆", width: "", prop: "sex" },
+          { label: "骞撮緞", width: "", prop: "age" },
+          { label: "鍑洪櫌澶╂暟", width: "", prop: "endDay" },
+          { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
+          { label: "鍖荤敓", width: "", prop: "drname" },
+          { label: "绉戝", width: "180", prop: "dept" },
+          { label: "鐥呭尯", width: "150", prop: "leavehospitaldistrictname" },
+        ];
+      }
+      console.log(this.patientqueryParams.allhosp);
+
+      // 鑾峰彇鎮h�呮暟鎹�
+      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;
+      });
+    },
+    // 鑾峰彇澶栭儴鎮h�呭鍏ュ垪琛�
+    Externallist() {
+      this.tableLabel = [
+        { label: "鎮h��", 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;
+      });
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      if (this.decision) return;
+      // 鍒ゆ柇鏄惁鏈夊垹闄�
+      if (this.multipleSelection.length <= selection.length) {
+        this.multipleSelection = selection;
+      } else {
+        this.multipleSelection.forEach((item) => {
+          if (selection.includes(item)) {
+          } else {
+            if (this.multipleSelection.length == 1) {
+              this.multipleSelection = [];
+            } else {
+              this.multipleSelection.splice(
+                this.multipleSelection.indexOf(item),
+                1
+              );
+            }
+            if (this.overallCase.length == 1) {
+              this.overallCase = [];
+            } else {
+              this.overallCase.splice(this.overallCase.indexOf(item), 1);
+            }
+          }
+        });
+      }
+      // 璧嬪�肩粰鏁翠綋閫変腑鏁扮粍
+      this.multipleSelection.forEach((item) => {
+        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);
+        }
+      });
+      console.log(this.multipleSelection, "瑙﹀彂閫夋嫨鍚巑ultipleSelection");
+    },
+    // 鍒囨崲椤靛悗鎭㈠閫変腑
+    Restorecheck() {
+      console.log(this.overallCase, "this.overallCase");
+      const allid = this.overallCase.map((item) => item.name);
+      const overlap = this.donorchargeList.filter((value) => {
+        return allid.includes(value.name);
+      });
+      // 淇濇寔ids鍜屽綋鍓嶉〉闈㈢殑鍚屾鎬�
+      this.multipleSelection = overlap;
+      console.log(this.multipleSelection, "杩涘叆鍒嗛〉multipleSelection");
+
+      this.toggleSelection(overlap);
+    },
+    // 鎸傝浇閫夋嫨鐘舵��
+    toggleSelection(rows) {
+      if (rows) {
+        this.decision = true;
+        this.$nextTick(() => {
+          rows.forEach((row) => {
+            this.$refs.multipleTable.toggleRowSelection(row, true);
+          });
+          this.decision = false;
+        });
+        console.log(123);
+      } else {
+        this.$refs.multipleTable.clearSelection();
+      }
+    },
+    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;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.examine-jic {
+  .headline {
+    font-size: 24px;
+    border-left: 5px solid #41a1be;
+    padding-left: 5px;
+    margin-bottom: 10px;
+    display: flex;
+    justify-content: space-between;
+    .Add-details {
+      font-size: 18px;
+      color: #02a7f0;
+      cursor: pointer;
+    }
+  }
+  .jic-value {
+    font-size: 20px;
+    border-top: 1px solid #a7abac;
+    padding: 10px;
+    margin-bottom: 10px;
+    .details-jic {
+      padding: 10px 15px;
+      border: 1px solid #dcdfe6;
+      -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+        0 0 6px 0 rgba(0, 0, 0, 0.04);
+      .details-title {
+        display: flex;
+        justify-content: space-between;
+        margin-bottom: 10px;
+        div:nth-child(2) {
+          color: #02a7f0;
+          cursor: pointer;
+        }
+      }
+      .details-renw {
+        background: #e4ebfc;
+        padding: 15px 5px;
+        border-radius: 5px;
+        margin-bottom: 20px;
+      }
+    }
+  }
+}
+::v-deep.el-table .el-table__header th:first-child .el-checkbox {
+  display: none;
+}
+.el-tag + .el-tag {
+  margin-left: 10px;
+  margin-bottom: 10px;
+}
+</style>

--
Gitblit v1.9.3