WXL
2025-01-15 1cb1fbf80c955986385377b5f84e8915d1e655d6
src/views/patient/patient/ExternalPatient.vue
@@ -1,51 +1,8 @@
<template>
  <div class="Questionnairemanagement">
    <!-- 左侧栏 -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">医院患者</div>
      </div>
      <div class="bottom-fl">
        <el-tabs
          tab-position="right"
          v-model="queryParams.allhosp"
          @tab-click="handleClick"
        >
          <!-- <el-tab-pane label="患者列表" name="0"></el-tab-pane> -->
          <el-tab-pane label="出入院患者" name="1"></el-tab-pane>
          <el-tab-pane label="门诊患者" name="2"></el-tab-pane>
          <el-tab-pane label="体检患者" name="3"></el-tab-pane>
        </el-tabs>
      </div>
    </div>
    <!-- 右侧数据 -->
    <div class="leftvlue">
      <!-- <div>
        <el-row :gutter="10">
          <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
            <el-card
              shadow="hover"
              :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
            >
              <div style="padding: 8px" @click="$router.push(item.router)">
                <span>{{ item.name }}</span>
                <div
                  style="
                    text-align: center;
                    font-size: 18px;
                    margin-top: 10px;
                    font-weight: 600;
                  "
                >
                  {{ item.value }}
                </div>
              </div>
            </el-card>
          </el-col>
        </el-row>
      </div> -->
      <div class="leftvlue-bg">
        <el-row :gutter="20">
          <!--用户数据-->
@@ -58,49 +15,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <!-- <el-form-item label="院区" prop="userName">
                <el-select v-model="queryParams.value1" placeholder="请选择">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item> -->
              <!-- <el-form-item label="科室/病区" prop="userName">
                <el-select v-model="queryParams.value2" placeholder="请选择">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item> -->
              <el-form-item
                label-width="138px"
                label="主治医生"
                prop="userName"
              >
                <el-input
                  v-model="queryParams.drname"
                  placeholder="请输入医生姓名"
                  maxlength="30"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="门诊编号" prop="visitno">
                <el-input
                  v-model="queryParams.visitno"
                  placeholder="请输入编号"
                  maxlength="30"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="患者姓名" prop="name">
                <el-input
                  v-model="queryParams.name"
@@ -109,20 +24,7 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="患者范围" prop="tagId">
            <el-select
                v-model="queryParams.searchscope"
                placeholder="请选择患者范围"
              >
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
          </el-form-item>
              <el-form-item label="联系电话" prop="telcode">
                <el-input
                  v-model="queryParams.telcode"
@@ -174,16 +76,7 @@
                  >删除</el-button
                >
              </el-col>
              <el-col :span="1.5">
                <el-button
                  type="primary"
                  plain
                  icon="el-icon-s-promotion"
                  size="medium"
                  @click="distribute"
                  >向任务派发患者</el-button
                >
              </el-col>
              <el-col :span="6">
                <div class="documentf">
                  <div class="document">
@@ -193,7 +86,7 @@
                      icon="el-icon-upload2"
                      size="medium"
                      @click="handleImport"
                      v-hasPermi="['system:user:import']"
                      >导入</el-button
                    >
                  </div>
@@ -204,7 +97,7 @@
                      icon="el-icon-download"
                      size="medium"
                      @click="handleExport"
                      v-hasPermi="['system:user:export']"
                      >导出</el-button
                    >
                  </div>
@@ -215,7 +108,7 @@
            <el-table
              v-loading="loading"
              :data="userList"
               height="660"
              height="660"
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
@@ -254,28 +147,6 @@
              >
              </el-table-column>
              <el-table-column
                label="居住地"
                align="center"
                key="placeOfResidence"
                prop="placeOfResidence"
                width="150"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="患者标签"
                align="center"
                key="tagList"
                prop="tagList"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList"
                    >{{ item.tagname }}
                  </span>
                </template>
              </el-table-column>
             <el-table-column
                label="证件号码"
                align="center"
                key="idcardno"
@@ -297,7 +168,7 @@
                prop="createTime"
                width="160"
              >
              <template slot-scope="scope">
                <template slot-scope="scope">
                  <span>{{ formatTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
@@ -319,33 +190,13 @@
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="
                      $router.push({
                        path: '/patient/patient/profile/',
                        query: { id: scope.row.id },
                      })
                    "
                    ><span class="button-textsc"
                      ><i class="el-icon-zoom-in"></i>详情编辑</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
                    ><span class="button-textxga"
                      ><i class="el-icon-edit"></i>患者过滤</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="Distributionservice(scope.row)"
                    @click="handleDelete(scope.row)"
                    ><span class="button-textxg"
                      ><i class="el-icon-menu"></i>服务</span
                      ><i class="el-icon-menu"></i>删除</span
                    ></el-button
                  >
                </template>
@@ -524,7 +375,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row  v-if="!amendtag">
        <el-row v-if="!amendtag">
          <el-col :span="8">
            <el-form-item label="民族" prop="name">
              <el-input
@@ -575,7 +426,7 @@
        </el-row>
        <el-row>
          <el-col :span="amendtag?12:24"v-if="!amendtag" >
          <el-col :span="amendtag ? 12 : 24" v-if="!amendtag">
            <el-form-item label="患者类型">
              <el-select v-model="form.pattype" placeholder="请选择类型">
                <el-option
@@ -685,27 +536,22 @@
      <!-- 导入检查 -->
      <div class="uploading" v-else-if="dractive == 2">
        <el-table :data="uploadingData" style="width: 100%">
          <el-table-column prop="serial" label="序号"> </el-table-column>
          <el-table-column prop="serial" label="患者id"> </el-table-column>
          <el-table-column prop="name" label="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </el-table-column>
          <el-table-column prop="certificatenum" label="证件号码">
          </el-table-column>
          <el-table-column prop="idcardno" width="300" label="证件号码"> </el-table-column>
          <el-table-column prop="goday" label="出生日期"> </el-table-column>
          <el-table-column prop="menum" label="本人联系方式"> </el-table-column>
          <el-table-column prop="younum" label="亲属联系方式">
          <el-table-column prop="telcode" width="200" label="联系方式"> </el-table-column>
          <el-table-column prop="createTime"  width="200" label="创建日期">
          </el-table-column>
          <el-table-column prop="tag" label="患者标签"> </el-table-column>
          <el-table-column prop="erry" label="错误原因"> </el-table-column>
          <el-table-column prop="opinion" label="处理意见"> </el-table-column>
        </el-table>
        <pagination
        <!-- <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="geterryList"
        />
        /> -->
      </div>
      <!-- 完成 -->
      <div class="drexamine" v-else-if="dractive == 3">
@@ -713,11 +559,12 @@
        <p>导入患者成功!</p>
        <p>
          本次
          <span style="color: #158bb8; font-size: 20px">{{
          <!-- <span style="color: #158bb8; font-size: 20px">{{
            ImportQuantity
          }}</span>
          条数据成功导入<span style="color: #72d3a9; font-size: 20px">{{
            ImportQuantity
          条数据 -->
          成功导入<span style="color: #72d3a9; font-size: 20px">{{
            uploadingData.length?uploadingData.length:0
          }}</span
          >位患者
        </p>
@@ -749,7 +596,7 @@
      <div slot="footer" class="dialog-footer" v-if="dractive == 3">
        <!-- <el-button type="primary" @click="submitFileForm">下一步</el-button> -->
        <el-button @click="submitclose">完成</el-button>
        <el-button type="warning" @click="submitclose">导出失败数据</el-button>
        <!-- <el-button type="warning" @click="submitclose">导出失败数据</el-button> -->
      </div>
      <div slot="footer" v-else>
        <el-button type="primary" @click="submitFileForm">下一步</el-button>
@@ -778,17 +625,13 @@
<script>
import { delUser } from "@/api/system/user";
import {
  messagelistpatient,
  alterpatient,
  addpatient,
  particularpatient,
  deletepatient,
  Exporterrorpatient,
  toleadpatient,
} from "@/api/patient/homepage";
import { getTasklist } from "@/api/AiCentre/index";
  getTasklist,
  Externallist,
  Externaledit,
  Externalpatient,
  delExternal,
} from "@/api/AiCentre/index";
import { listtag } from "@/api/system/label";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
@@ -797,7 +640,12 @@
export default {
  name: "Patient",
  dicts: ["sys_normal_disable", "task_status", "sys_user_sex",'futter_patient'],
  dicts: [
    "sys_normal_disable",
    "task_status",
    "sys_user_sex",
    "futter_patient",
  ],
  components: { Treeselect },
  data() {
    return {
@@ -822,6 +670,7 @@
      // 部门树选项
      deptOptions: undefined,
      options: [],
      uploadingData:[],
      // 是否显示弹出层
      open: false,
      // 部门名称
@@ -874,7 +723,6 @@
          value: 2,
          label: "女",
        },
      ],
      cardlist: [
@@ -954,14 +802,8 @@
      // 查询参数
      queryParams: {
        pageNum: 1,
        allhosp: "1",
        pageSize: 10,
        searchscope:2,
        idcardno: undefined,
        name: undefined,
        status: undefined,
        tagIds: undefined,
        telcode: undefined,
      },
      // 表单校验
      rules: {
@@ -996,9 +838,7 @@
            trigger: "blur",
          },
        ],
        placeOfResidence: [
          { required: true, message: "居住地不能为空", trigger: "blur" },
        ],
      },
    };
  },
@@ -1017,24 +857,8 @@
  methods: {
    /** 查询患者列表 */
    getList() {
      if (this.queryParams.searchscope == 1) {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes=null;
      } else if (this.queryParams.searchscope == 2) {
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.queryParams.leaveldeptcodes=null;
      } else {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.loading = true;
      messagelistpatient(this.queryParams).then((response) => {
      Externallist(this.queryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
@@ -1095,7 +919,6 @@
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
@@ -1122,7 +945,7 @@
    /** 修改按钮操作 */
    handleUpdate(row) {
      const userIds = row.id || this.ids;
      particularpatient(userIds).then((response) => {
      Externalpatient(userIds).then((response) => {
        console.log(response);
        this.form = response.data;
      });
@@ -1136,7 +959,7 @@
          if (this.amendtag) {
            this.form.isoperation = 2;
            this.form.notrequiredFlag = 1;
            alterpatient(this.form)
            Externaledit(this.form)
              .then((response) => {
                console.log(response);
              })
@@ -1146,7 +969,7 @@
              });
          } else {
            this.form.isoperation = 1;
            alterpatient(this.form)
            Externaledit(this.form)
              .then((response) => {
                console.log(response);
              })
@@ -1164,11 +987,11 @@
    /** 删除按钮操作 */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      const userIds =[ row.id]
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return deletepatient(userIds);
          return delExternal(userIds);
        })
        .then(() => {
          this.getList();
@@ -1237,17 +1060,18 @@
    },
    // 文件上传成功处理
    handleFileSuccess(response, file, fileList) {
      this.upload.open = false;
      // this.upload.open = false;
      this.upload.isUploading = false;
      this.uploadingData = response.rows;
      this.$refs.upload.clearFiles();
      this.$alert(
        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
          response.msg +
          "</div>",
        "导入结果",
        { dangerouslyUseHTMLString: true }
      );
      this.getList();
      // this.$alert(
      //   "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
      //     response.msg +
      //     "</div>",
      //   "导入结果",
      //   { dangerouslyUseHTMLString: true }
      // );
      // this.getList();
    },
    // 提交上传文件
    submitFileForm() {
@@ -1262,6 +1086,8 @@
    submitclose() {
      this.upload.open = false;
      this.dractive = 1;
      this.uploadingData=[],
      this.getList();
    },
  },
};
@@ -1350,7 +1176,7 @@
  cursor: pointer; /* 鼠标悬浮时变为手形 */
}
.leftvlue {
  width: 80%;
  width: 100%;
  margin-top: 10px;
}
.leftvlue-bg {