WXL (wul)
18 小时以前 80a72af5ffd14dda088a3b81d30084f41708bd1c
任务派发患者模式更新
已修改2个文件
465 ■■■■■ 文件已修改
src/components/PatientSelection/index.vue 343 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    },
  },
};
src/views/followvisit/tasklist/index.vue
@@ -255,7 +255,7 @@
            <el-button
              size="medium"
              type="text"
              @click="handleAddpatient(scope.row)"
              @click="handleAddpatient(scope.row.taskid, scope.row.type)"
              ><span class="button-hz"
                ><i class="el-icon-circle-plus-outline"></i>新增患者</span
              ></el-button
@@ -381,9 +381,7 @@
    <Patient-Selection
      ref="Patient"
      :dialogVisiblepatient="dialogVisiblepatient"
      :overallCase="Patientlist"
      :tableLabel="tableLabelhz"
      @addoption="dialogVisiblepatient = false"
      @addoption="addoption"
      @kkoption="dialogVisiblepatient = true"
    />
  </div>
@@ -400,12 +398,7 @@
} from "@/api/system/user";
import {
  getTasklist,
  getTaskInfo,
  Editsingletask,
  delTaskInfo,
  Questionnairetasklist,
  Questionnairetaskget,
  Questionnairetasksponsor,
  TaskTemplateSendExecution,
} from "@/api/AiCentre/index";
import store from "@/store";
@@ -417,7 +410,7 @@
export default {
  name: "Tasklist",
  dicts: ["sys_normal_disable", "sys_user_sex", "task_status"],
  components: { Treeselect },
  components: { Treeselect, PatientSelection },
  data() {
    return {
      // 遮罩层
@@ -1057,110 +1050,13 @@
      const item = data.find((item) => item.value === value);
      return item ? item.label : null;
    },
    //患者添加相关
    handleAddpatient(row) {
      this.allpids = [];
      this.overallCase.forEach((item) => {
        this.allpids.push(item.patid);
      });
      if (this.patientqueryParams.allhosp == 4) {
        this.tableLabelhz = [
          // { 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.tableLabelhz = [
          { 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" },
        ];
      }
      if (this.allpids[0]) {
        this.patientqueryParams.pids = this.allpids;
      } else {
        this.patientqueryParams.pids = null;
      }
      // 来源判断
      if (this.patientqueryParams.allhosp == 4) {
        this.patientqueryParams.hospitaldistrictcodes = [];
        this.patientqueryParams.deptcodes = [];
      } else if (this.patientqueryParams.allhosp == 1) {
        this.patientqueryParams.deptcodes =
          this.patientqueryParams.leaveldeptcodes;
        this.patientqueryParams.hospitaldistrictcodes =
          this.patientqueryParams.leavehospitaldistrictcodes;
        this.patientqueryParams.leavehospitaldistrictcodes = [];
        this.patientqueryParams.leaveldeptcodes = [];
      }
      getTaskpatientQC(this.patientqueryParams).then((response) => {
        this.patientuserList = response.rows;
        this.patientuserList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
        });
        this.patienttotal = response.total;
        this.loading = false;
        this.Restorecheck();
      });
      this.dialogVisiblepatient = true;
    handleAddpatient(taskid) {
      this.$refs.Patient.handleAddpatient(taskid);
      this.dialogVisiblepatient = true; // 手动控制弹窗显示
    },
    // 查询
    handleQuery() {
      // 获取外部患者
      if (this.patientqueryParams.allhosp == 6) {
        this.Externallist();
        console.log();
        return;
      }
      if (this.patientqueryParams.searchscope == 1) {
        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.patientqueryParams.leavehospitaldistrictcodes = [];
      } else if (this.patientqueryParams.searchscope == 2) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
        this.patientqueryParams.leaveldeptcodes = [];
      } else {
        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (
        !this.patientqueryParams.leavehospitaldistrictcodes ||
        !this.patientqueryParams.leavehospitaldistrictcodes[0]
      )
        this.patientqueryParams.leavehospitaldistrictcodes = null;
      if (
        !this.patientqueryParams.leaveldeptcodes ||
        !this.patientqueryParams.leaveldeptcodes[0]
      )
        this.patientqueryParams.leaveldeptcodes = null;
      this.handleAddpatient();
    addoption() {
      this.dialogVisiblepatient = false; // 手动控制弹窗显示
      this.handleQuery();
    },
  },
};