WXL
2024-08-19 9bc27231d681cbc1bae6d8f199521d332c9c23f7
src/views/patient/patient/index.vue
@@ -12,6 +12,7 @@
          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>
@@ -24,8 +25,11 @@
      <div>
        <el-row :gutter="10">
          <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
            <el-card shadow="hover">
              <div style="padding: 8px">
            <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="
@@ -54,7 +58,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="院区" prop="userName">
              <!-- <el-form-item label="院区" prop="userName">
                <el-select v-model="queryParams.value1" placeholder="请选择">
                  <el-option
                    v-for="item in options"
@@ -64,8 +68,8 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="科室/病区" prop="userName">
              </el-form-item> -->
              <!-- <el-form-item label="科室/病区" prop="userName">
                <el-select v-model="queryParams.value2" placeholder="请选择">
                  <el-option
                    v-for="item in options"
@@ -75,45 +79,26 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              </el-form-item> -->
              <el-form-item
                label-width="138px"
                label="主治医生"
                prop="userName"
              >
                <el-select v-model="queryParams.value3" 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-date-picker
                  v-model="queryParams.valuetime1"
                  align="right"
                  type="date"
                  placeholder="选择日期"
                >
                </el-date-picker>
              </el-form-item>
              <el-form-item label="出院日期" prop="departuretime">
                <el-date-picker
                  v-model="queryParams.departuretime"
                  align="right"
                  type="date"
                  placeholder="选择日期"
                >
                </el-date-picker>
              </el-form-item>
              <el-form-item label="就诊编号" prop="number">
                <el-input
                  v-model="queryParams.number"
                  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">
@@ -121,6 +106,15 @@
                  v-model="queryParams.name"
                  placeholder="请输入姓名"
                  maxlength="30"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="联系电话" prop="telcode">
                <el-input
                  v-model="queryParams.telcode"
                  placeholder="请输入联系电话"
                  maxlength="30"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
@@ -177,6 +171,16 @@
                  >删除</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">
@@ -212,12 +216,14 @@
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                fixed
                label="序号"
                align="center"
                key="patid"
                prop="patid"
                key="id"
                prop="id"
              />
              <el-table-column
                fixed
                label="姓名"
                align="center"
                key="name"
@@ -246,8 +252,8 @@
              <el-table-column
                label="居住地"
                align="center"
                key="age"
                prop="age"
                key="placeOfResidence"
                prop="placeOfResidence"
                width="120"
              />
              <el-table-column
@@ -259,20 +265,22 @@
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <span v-for="item in scope.row.tagList"
                    >{{ item.tagname }}
                  </span>
                </template>
              </el-table-column>
              <el-table-column
                label="证件类型"
                align="center"
                key="idtype"
                prop="idtype"
                key="idcardtype"
                prop="idcardtype"
                width="120"
              /><el-table-column
                label="证件号码"
                align="center"
                key="idno"
                prop="idno"
                key="idcardno"
                prop="idcardno"
                width="190"
              />
@@ -286,15 +294,15 @@
              <el-table-column
                label="建档日期"
                align="center"
                key="uploadTime"
                prop="uploadTime"
                key="createTime"
                prop="createTime"
                width="160"
              >
              </el-table-column>
              <el-table-column
                label="更新日期"
                align="center"
                prop="updateTime"
                prop="archivetime"
                width="160"
              >
                <template slot-scope="scope">
@@ -302,6 +310,7 @@
                </template>
              </el-table-column>
              <el-table-column
                fixed="right"
                label="操作"
                align="center"
                width="190"
@@ -314,15 +323,15 @@
                    @click="
                      $router.push({
                        path: '/patient/patient/profile/',
                        query: { id: scope.row.patid },
                        query: { id: scope.row.id },
                      })
                    "
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textsc"
                      ><i class="el-icon-zoom-in"></i>查看</span
                      ><i class="el-icon-zoom-in"></i>详情编辑</span
                    ></el-button
                  >
                  <el-button
                  <!-- <el-button
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
@@ -330,7 +339,7 @@
                    ><span class="button-textxga"
                      ><i class="el-icon-edit"></i>修改</span
                    ></el-button
                  >
                  > -->
                  <el-button
                    size="medium"
                    type="text"
@@ -355,6 +364,127 @@
        </el-row>
      </div>
    </div>
    <el-dialog title="选择任务" :visible.sync="distributeVisible" width="70%">
      <div class="preview-left">
        <el-form
          :model="queryParams"
          ref="queryForm"
          size="small"
          :inline="true"
          label-width="98px"
        >
          <el-select
            @change="distribute"
            v-model="tasktopic"
            placeholder="请选择任务类型"
          >
            <el-option
              v-for="item in taskoptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form>
        <el-table v-loading="loading" :data="taskuserList">
          <el-table-column
            label="任务名称"
            fixed
            align="center"
            key="taskName"
            prop="taskName"
            width="140"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="任务描述"
            align="center"
            key="taskDesc"
            prop="taskDesc"
            width="180"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="服务项目"
            align="center"
            key="templatename"
            prop="templatename"
          />
          <el-table-column
            label="待执行/总任务"
            align="center"
            key="nickName"
            prop="nickName"
          >
            <template slot-scope="scope">
              <span>{{ scope.row.wfs }}/{{ scope.row.yfs }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="创建人"
            align="center"
            key="createBy"
            prop="createBy"
            width="120"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="创建时间"
            sortable
            align="center"
            prop="createTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="状态"
            fixed="right"
            align="center"
            key="sendState"
            prop="sendState"
            width="120"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.task_status"
                :value="scope.row.sendState"
              />
            </template>
          </el-table-column>
          <el-table-column
            label="任务详情"
            fixed="right"
            align="center"
            width="200"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
                ><span class="button-xq"
                  ><i class="el-icon-s-data"></i>选择派发</span
                ></el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="tasktotal > 0"
          :total="tasktotal"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="distribute"
        />
      </div>
    </el-dialog>
    <!-- 添加或修改用户配置对话框 -->
    <el-dialog
@@ -386,7 +516,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="民族" prop="age">
            <el-form-item label="年龄" prop="age">
              <el-input
                v-model="form.age"
                placeholder="请输入年龄"
@@ -399,7 +529,7 @@
          <el-col :span="8">
            <el-form-item label="民族" prop="name">
              <el-input
                v-model="form.name"
                v-model="form.nation"
                placeholder="请输入民族"
                maxlength="30"
              />
@@ -408,7 +538,7 @@
          <el-col :span="8">
            <el-form-item label="籍贯" prop="age">
              <el-input
                v-model="form.age"
                v-model="form.nativePlace"
                placeholder="请输入籍贯"
                maxlength="30"
              />
@@ -426,8 +556,8 @@
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="证件类型" prop="idtype">
              <el-select v-model="form.idtype" placeholder="请选择性别">
            <el-form-item label="证件类型" prop="idcardtype">
              <el-select v-model="form.idcardtype" placeholder="请选择性别">
                <el-option
                  v-for="item in paperstypes"
                  :key="item.papersname"
@@ -438,9 +568,9 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="证件号" prop="idno">
            <el-form-item label="证件号" prop="idcardno">
              <el-input
                v-model="form.idno"
                v-model="form.idcardno"
                placeholder="请输入证件号"
                maxlength="50"
              />
@@ -449,17 +579,17 @@
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="出生地" prop="idno">
            <el-form-item label="出生地" prop="idcardno">
              <el-input
                v-model="form.idno"
                v-model="form.birthplace"
                placeholder="国、省、地市、区县、街道等详细信息"
                maxlength="50"
              />
            </el-form-item> </el-col
          ><el-col :span="12">
            <el-form-item label="居住地" prop="idno">
            <el-form-item label="居住地" prop="idcardno">
              <el-input
                v-model="form.idno"
                v-model="form.placeOfResidence"
                placeholder="国、省、地市、区县、街道等详细信息"
                maxlength="50"
              />
@@ -469,7 +599,7 @@
        <el-row>
          <el-col :span="24">
            <el-form-item label="患者类型">
              <el-select v-model="form.Patienttype" placeholder="请选择类型">
              <el-select v-model="form.pattype" placeholder="请选择类型">
                <el-option
                  v-for="item in Patienttype"
                  :key="item.value"
@@ -631,14 +761,16 @@
    </el-dialog>
    <!-- 跳转服务对话框 -->
    <el-dialog title="选择服务类型" :visible.sync="serviceVisible">
      <el-radio-group v-model="serviceradio">
        <el-radio :label="1">宣教随访</el-radio>
        <el-radio :label="2">门诊服务</el-radio>
        <el-radio :label="3">出院服务</el-radio>
        <el-radio :label="4">复诊服务</el-radio>
        <el-radio :label="5">体检通知</el-radio>
        <el-radio :label="6">问卷服务</el-radio>
      </el-radio-group>
      <el-card class="box-card">
        <el-radio-group v-model="serviceradio">
          <el-radio :label="1">宣教随访</el-radio>
          <el-radio :label="2">门诊服务</el-radio>
          <el-radio :label="3">出院服务</el-radio>
          <el-radio :label="4">复诊服务</el-radio>
          <el-radio :label="5">体检通知</el-radio>
          <el-radio :label="6">问卷服务</el-radio>
        </el-radio-group>
      </el-card>
      <div slot="footer" class="dialog-footer">
        <el-button @click="serviceVisible = false">取 消</el-button>
        <el-button type="primary" @click="CreateService">创建服务</el-button>
@@ -649,13 +781,7 @@
<script>
import { delUser } from "@/api/system/user";
import {
  listpat_archive,
  getpat_archive,
  addpat_archive,
  updatepat_archive,
  delpat_archive,
} from "@/api/smartorpor/pat_archive";
import {
  messagelistpatient,
  alterpatient,
@@ -665,14 +791,16 @@
  Exporterrorpatient,
  toleadpatient,
} from "@/api/patient/homepage";
import { getTasklist } from "@/api/AiCentre/index";
import { listtag } from "@/api/system/label";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import store from "@/store";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "Userhuanze",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  name: "Patient",
  dicts: ["sys_normal_disable", "task_status", "sys_user_sex"],
  components: { Treeselect },
  data() {
    return {
@@ -688,8 +816,10 @@
      showSearch: true,
      // 总条数
      total: 0,
      tasktotal: 0,
      // 用户表格数据
      userList: null,
      taskuserList: null,
      // 弹出层标题
      title: "",
      // 部门树选项
@@ -704,8 +834,19 @@
      amendtag: false, //是否修改
      serviceVisible: false,
      serviceradio: 1,
      distributeVisible: false,
      tasktopic: "5", //新增类型
      // 查询参数
      topqueryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        tagid: undefined,
        topic: undefined,
      },
      // 日期范围
      dateRange: [],
      taskoptions: [],
      paperstypes: [
        { papersname: "身份证" },
        { papersname: "护照" },
@@ -715,7 +856,7 @@
      Patienttype: [
        {
          value: "1",
          label: "住院患者",
          label: "在院患者",
        },
        {
          value: "2",
@@ -724,6 +865,10 @@
        {
          value: "3",
          label: "体检患者",
        },
        {
          value: "4",
          label: "出院患者",
        },
      ],
@@ -735,14 +880,17 @@
        {
          name: "在院患者",
          value: 23,
          router: "/patient/inpatient",
        },
        {
          name: "离院患者",
          name: "出院患者",
          value: 41,
          router: "/patient/hospital",
        },
        {
          name: "诊疗患者",
          name: "门诊患者",
          value: 56,
          router: "/patient/outpatient",
        },
        {
          name: "离世患者",
@@ -755,9 +903,9 @@
        age: "",
        sex: "",
        tagList: [],
        idno: "",
        idcardno: "",
        telcode: "",
        idtype: "",
        idcardtype: "",
        relativetelcode: "",
      },
      activeName: "first", //侧边选择
@@ -792,9 +940,9 @@
      // 查询参数
      queryParams: {
        pageNum: 1,
        allhosp: "1",
        allhosp: "0",
        pageSize: 10,
        idno: undefined,
        idcardno: undefined,
        name: undefined,
        status: undefined,
        tagIds: undefined,
@@ -857,10 +1005,13 @@
  created() {
    this.getList();
    this.gettabList();
    //获取已筛选后的可选任务类型
    this.taskoptions = store.getters.Serviceauthority;
  },
  methods: {
    /** 查询患者列表 */
    getList() {
      console.log(this.dict.type.sys_user_sex);
      this.loading = true;
      messagelistpatient(this.queryParams).then((response) => {
        console.log(response);
@@ -872,10 +1023,20 @@
    handleClick() {
      this.getList();
    },
    findLabelByValue(data, value) {
      const item = data.find((item) => item.value === value);
      return item ? item.label : null;
    },
    /** 查询标签列表 */
    gettabList() {
      const queryParams = {};
      listtag().then((response) => {
      const tagqueryParams = {
        pageNum: 1,
        pageSize: 1000,
        tagname: undefined,
        tagdescription: undefined,
        tagcategoryid: "0",
      };
      listtag(tagqueryParams).then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
@@ -905,9 +1066,9 @@
        age: "",
        sex: "",
        tagList: [],
        idno: "",
        idcardno: "",
        telcode: "",
        idtype: "",
        idcardtype: "",
        relativetelcode: "",
      };
      // this.resetForm("form");
@@ -926,7 +1087,7 @@
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.patid);
      this.ids = selection.map((item) => item.id);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -940,7 +1101,7 @@
    /** 修改按钮操作 */
    handleUpdate(row) {
      console.log(row);
      const userIds = row.patid || this.ids;
      const userIds = row.id || this.ids;
      particularpatient(userIds).then((response) => {
        console.log(response);
        this.form = response.data;
@@ -948,10 +1109,12 @@
      this.amendtag = true;
      this.Labelchange = true;
    },
    //修改/新增患者
    submitForm() {
      if (condition) {
      }
      if (this.amendtag) {
        this.form.isoperation = 2;
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
@@ -961,7 +1124,8 @@
            this.$modal.msgSuccess("修改成功");
          });
      } else {
        addpatient(this.form)
        this.form.isoperation = 1;
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
          })
@@ -994,6 +1158,31 @@
      this.$router.push({
        path: "/followvisit/particty",
        query: { type: this.serviceradio },
      });
    },
    distribute() {
      this.distributeVisible = true;
      if (this.tasktopic == 1) {
        this.topqueryParams.type = 3;
      } else if (this.tasktopic == 2) {
        this.topqueryParams.type = 1;
      } else if (this.tasktopic == 3) {
        this.topqueryParams.type = 1;
      } else if (this.tasktopic == 4) {
        this.topqueryParams.type = 1;
      } else if (this.tasktopic == 5) {
        this.topqueryParams.type = 1;
      } else if (this.tasktopic == 6) {
        this.topqueryParams.type = 2;
      }
      this.topqueryParams.typename = this.findLabelByValue(
        this.taskoptions,
        this.tasktopic
      );
      getTasklist(this.topqueryParams).then((response) => {
        this.taskuserList = response.rows;
        this.tasktotal = response.total;
        this.$forceUpdate();
      });
    },
    /** 导出按钮操作 */
@@ -1095,6 +1284,22 @@
    display: center !important;
  }
}
.preview-left {
  margin: 20px;
  //   margin: 20px;
  padding: 30px;
  background: #ffff;
  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);
  .scriptTopic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
::v-deep.el-tabs--left,
.el-tabs--right {
  overflow: hidden;
@@ -1119,6 +1324,7 @@
}
::v-deep.leftvlue .el-card__body:hover {
  background: #8dc8f8;
  cursor: pointer; /* 鼠标悬浮时变为手形 */
}
.leftvlue {
  width: 80%;