患者管理页面
This commit is contained in:
parent
26c2a9602a
commit
7fae09d0e9
@ -49,3 +49,23 @@ export function delDepartment(id) {
|
|||||||
method: 'delete'
|
method: 'delete'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导入
|
||||||
|
export function patientUpload(data) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/patientInfo/patientUpload',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导入提交
|
||||||
|
|
||||||
|
export function secondaryUpload(data) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/patientInfo/secondaryUpload',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
src/assets/images/jd.png
Normal file
BIN
src/assets/images/jd.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 265 B |
BIN
src/assets/images/run.gif
Normal file
BIN
src/assets/images/run.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
@ -1,23 +1,431 @@
|
|||||||
<template>
|
<template>
|
||||||
<Form ref="form" :label-width="labelWidth" :size="size" style="display: flex;">
|
<Form
|
||||||
<div id="searchFilter" ref="searchFilter" :gutter="10" style="display: flex; flex-wrap: wrap;"
|
ref="form"
|
||||||
:style="{ width: widths + '%' }">
|
:label-width="labelWidth"
|
||||||
|
:size="size"
|
||||||
|
style="display: flex"
|
||||||
|
class="item-search-form"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
id="searchFilter"
|
||||||
|
ref="searchFilter"
|
||||||
|
:gutter="10"
|
||||||
|
style="display: flex; flex-wrap: wrap"
|
||||||
|
:style="{ width: widths + '%' }"
|
||||||
|
>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
<div style="width:20%;text-align:right;padding-right:18px;">
|
<div
|
||||||
|
style="width: 20%; text-align: right; padding-right: 18px"
|
||||||
|
:style="{
|
||||||
|
width:
|
||||||
|
this.$router.currentRoute.path == '/patient/Patientmanagement'
|
||||||
|
? '27%'
|
||||||
|
: '20%',
|
||||||
|
}"
|
||||||
|
>
|
||||||
<Button type="primary" @click="handleQuery" size="mini">搜索</Button>
|
<Button type="primary" @click="handleQuery" size="mini">搜索</Button>
|
||||||
<Button @click="handleReset" size="mini">重置</Button>
|
<Button @click="handleReset" size="mini">重置</Button>
|
||||||
<Button v-show="collapsiable" type="text" @click="shiftCollapsiable" size="mini">
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
plain
|
||||||
|
icon="el-icon-upload2"
|
||||||
|
size="mini"
|
||||||
|
@click="handleUpload"
|
||||||
|
v-if="this.$router.currentRoute.path == '/patient/Patientmanagement'"
|
||||||
|
>导入</el-button
|
||||||
|
>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
v-show="collapsiable"
|
||||||
|
type="text"
|
||||||
|
@click="shiftCollapsiable"
|
||||||
|
size="mini"
|
||||||
|
>
|
||||||
<span>
|
<span>
|
||||||
{{ fold ? '收起' : '展开' }}
|
{{ fold ? "收起" : "展开" }}
|
||||||
<i :class="fold ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
|
<i :class="fold ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
|
||||||
</span>
|
</span>
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 导入-->
|
||||||
|
<el-dialog title="导入" :visible.sync="open" width="600px" append-to-body>
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item
|
||||||
|
v-for="(item, index) in form.deptAliasVOS"
|
||||||
|
:key="index"
|
||||||
|
:rules="rules.deptAliasVOS.departmentName"
|
||||||
|
:prop="`deptAliasVOS.${index}.departmentName`"
|
||||||
|
>
|
||||||
|
<template slot="label">
|
||||||
|
{{ item.deptAlias }}
|
||||||
|
</template>
|
||||||
|
<el-select
|
||||||
|
v-model="item.departmentName"
|
||||||
|
placeholder="请选择科室"
|
||||||
|
style="width: 208px"
|
||||||
|
@change="changeway($event, index)"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in form.departments"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.departmentName"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<!-- <el-button
|
||||||
|
v-if="!form.departments"
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
style="margin-left: 8px"
|
||||||
|
@click="additem(item, index)"
|
||||||
|
>添加</el-button
|
||||||
|
> -->
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
style="margin-left: 8px"
|
||||||
|
@click="additem(item, index)"
|
||||||
|
>添加</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- //导入 -->
|
||||||
|
<el-dialog
|
||||||
|
title="导入"
|
||||||
|
:visible.sync="uploadopen"
|
||||||
|
width="400px"
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-upload
|
||||||
|
drag
|
||||||
|
class="upload-demo"
|
||||||
|
ref="upload"
|
||||||
|
:action="action.url"
|
||||||
|
:headers="action.headers"
|
||||||
|
:on-preview="handlePreview"
|
||||||
|
:on-remove="handleRemove"
|
||||||
|
:file-list="fileList"
|
||||||
|
:auto-upload="false"
|
||||||
|
:on-success="handleAvatarSuccess"
|
||||||
|
:data="action.data"
|
||||||
|
>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
<div class="el-upload__tip" slot="tip" style="line-height: 25px">
|
||||||
|
<div>
|
||||||
|
1.
|
||||||
|
<span
|
||||||
|
style="color: #1890ff; cursor: pointer"
|
||||||
|
@click="importTemplate"
|
||||||
|
>下载导入模板</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div>2.最大支持2MB的xls/xlsx文件</div>
|
||||||
|
<div>3.一次导入患者数量不能超过5000</div>
|
||||||
|
<el-checkbox v-model="records" style="font-size: 12px;">自动去除当日重复记录</el-checkbox>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitUpload">确 定</el-button>
|
||||||
|
<el-button @click="uploadcancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 添加或修改科室信息对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
title="添加"
|
||||||
|
:visible.sync="openadd"
|
||||||
|
width="1000px"
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="formadd"
|
||||||
|
:model="formadd"
|
||||||
|
:rules="rulesadd"
|
||||||
|
label-width="120px"
|
||||||
|
:inline="true"
|
||||||
|
>
|
||||||
|
<!-- <el-form-item label="上级科室id" prop="parentDepartmentId">
|
||||||
|
<el-input
|
||||||
|
v-model="form.parentDepartmentId"
|
||||||
|
placeholder="请输入上级科室id"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="所属机构id" prop="hospitalAgencyId">
|
||||||
|
<el-input v-model="form.hospitalAgencyId" placeholder="请输入所属机构id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="所属机构名称" prop="agencyName">
|
||||||
|
<el-input
|
||||||
|
v-model="form.agencyName"
|
||||||
|
placeholder="请输入所属机构名称"
|
||||||
|
/>
|
||||||
|
</el-form-item> -->
|
||||||
|
<div class="nameinformation">基本信息</div>
|
||||||
|
<div class="content">
|
||||||
|
<el-form-item label="科室名称" prop="departmentName">
|
||||||
|
<el-input
|
||||||
|
maxlength="100"
|
||||||
|
v-model="formadd.departmentName"
|
||||||
|
placeholder="请输入科室名称"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="科室代码" prop="departmentCode">
|
||||||
|
<el-input
|
||||||
|
maxlength="30"
|
||||||
|
onKeyUp="value=value.replace(/[\W]/g,'')"
|
||||||
|
v-model="formadd.departmentCode"
|
||||||
|
placeholder="请输入科室代码"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="所属机构" prop="hospitalAgencyName">
|
||||||
|
<el-cascader
|
||||||
|
clearable
|
||||||
|
:props="{ checkStrictly: true }"
|
||||||
|
:options="treeOptions"
|
||||||
|
@change="change"
|
||||||
|
style="width: 205px; color: black"
|
||||||
|
v-model="formadd.hospitalAgencyIdtwo"
|
||||||
|
:show-all-levels="false"
|
||||||
|
:placeholder="
|
||||||
|
formadd.hospitalAgencyName ? formadd.hospitalAgencyName : ''
|
||||||
|
"
|
||||||
|
ref="cascader"
|
||||||
|
:key="isResouceShow"
|
||||||
|
></el-cascader>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="节点类型" prop="nodeType">
|
||||||
|
<el-select
|
||||||
|
v-model="formadd.nodeType"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 205px"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in nodeTypeoptions"
|
||||||
|
:key="item.dictValue"
|
||||||
|
:label="item.dictLabel"
|
||||||
|
:value="item.dictValue"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="科室简称" prop="departmentAbbreviation">
|
||||||
|
<el-input
|
||||||
|
maxlength="100"
|
||||||
|
v-model="formadd.departmentAbbreviation"
|
||||||
|
placeholder="请输入科室简称"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="科室类型" prop="departmentType">
|
||||||
|
<el-select
|
||||||
|
v-model="formadd.departmentType"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 205px"
|
||||||
|
clearable=""
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in departmentoptions"
|
||||||
|
:key="item.dictValue"
|
||||||
|
:label="item.dictLabel"
|
||||||
|
:value="item.dictValue"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="科室负责人id" prop="departmentPersonId">
|
||||||
|
<el-input
|
||||||
|
v-model="form.departmentPersonId"
|
||||||
|
placeholder="请输入科室负责人id"
|
||||||
|
/>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item label="科室负责人姓名" prop="departmentPersonName">
|
||||||
|
<el-input
|
||||||
|
maxlength="20"
|
||||||
|
v-model="formadd.departmentPersonName"
|
||||||
|
placeholder="请输入科室负责人姓名"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="上级科室" prop="parentDepartmentId">
|
||||||
|
<el-select
|
||||||
|
v-model="formadd.parentDepartmentName"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 205px"
|
||||||
|
@change="changeparentDepartment"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in optionsparentDepartment"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.departmentName"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
<div class="nameinformation">扩展信息</div>
|
||||||
|
<div class="content">
|
||||||
|
<el-form-item label="提供服务类别" prop="provideServiceCategory">
|
||||||
|
<el-select
|
||||||
|
clearable
|
||||||
|
v-model="formadd.provideServiceCategory"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 205px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.dictValue"
|
||||||
|
:label="item.dictLabel"
|
||||||
|
:value="item.dictValue"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="细分类别" prop="subdivisionCategoryId">
|
||||||
|
<el-select
|
||||||
|
v-model="formadd.subdivisionCategoryName"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 205px"
|
||||||
|
clearable
|
||||||
|
@change="optionsubdivision"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in optionsubdivisionCategory"
|
||||||
|
:key="item.subdivisionCategoryCode"
|
||||||
|
:label="item.subdivisionCategoryName"
|
||||||
|
:value="item.subdivisionCategoryCode"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="标准科室对照" prop="normDepartmentCompareId">
|
||||||
|
<el-select
|
||||||
|
v-model="formadd.normDepartmentCompareId"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 205px"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in compareList"
|
||||||
|
:key="item.departmentId"
|
||||||
|
:label="item.departmentName"
|
||||||
|
:value="item.departmentId"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编制床位数" prop="prepareBedsCount">
|
||||||
|
<el-input
|
||||||
|
maxlength="8"
|
||||||
|
onKeyUp="value=value.replace(/[\W]/g,'')"
|
||||||
|
v-model="formadd.prepareBedsCount"
|
||||||
|
placeholder="请输入编制床位数"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="科室电话" prop="departmentPhone">
|
||||||
|
<el-input
|
||||||
|
maxlength="12"
|
||||||
|
onKeyUp="value=value.replace(/[\W]/g,'')"
|
||||||
|
v-model="formadd.departmentPhone"
|
||||||
|
placeholder="请输入科室电话"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="科室邮箱" prop="departmentMail">
|
||||||
|
<el-input
|
||||||
|
maxlength="20"
|
||||||
|
v-model="formadd.departmentMail"
|
||||||
|
placeholder="请输入科室邮箱"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="成立日期" prop="establishDate">
|
||||||
|
<el-date-picker
|
||||||
|
clearable
|
||||||
|
v-model="formadd.establishDate"
|
||||||
|
type="date"
|
||||||
|
style="width: 205px"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
placeholder="请选择成立日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="撤销日期" prop="revokeDate">
|
||||||
|
<el-date-picker
|
||||||
|
clearable
|
||||||
|
v-model="formadd.revokeDate"
|
||||||
|
type="date"
|
||||||
|
style="width: 205px"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
placeholder="请选择撤销日期"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitFormadd">确 定</el-button>
|
||||||
|
<el-button @click="canceladd">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<el-dialog
|
||||||
|
title="查看"
|
||||||
|
:visible.sync="openphone"
|
||||||
|
width="900px"
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-table v-loading="loading" :data="patientInfoList">
|
||||||
|
<el-table-column label="科室名称" align="center" prop="patientName" />
|
||||||
|
<el-table-column label="就诊时间" align="center" prop="patientName" />
|
||||||
|
<el-table-column label="姓名" align="center" prop="patientName" />
|
||||||
|
<el-table-column label="联系电话" align="center" prop="patientPhone" width="120" />
|
||||||
|
<el-table-column label="年龄" align="center" prop="age" />
|
||||||
|
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
|
||||||
|
</el-table>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="cancelphone">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 遮罩层 -->
|
||||||
|
<div class="mask" v-if="showMask">
|
||||||
|
<!-- 图片 -->
|
||||||
|
<div class="maskimg">
|
||||||
|
<div class="wrap">
|
||||||
|
<div class="progress-bar">
|
||||||
|
<div class="progress"></div>
|
||||||
|
<div class="inner" :style="{ '--left': progress + '%' }"></div>
|
||||||
|
<div class="runner" :style="{ '--left': progress + '%' }"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="text">导入中,请稍等</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { Form, FormItem, Button } from 'element-ui'
|
import { Form, FormItem, Button } from 'element-ui'
|
||||||
|
import { faL, fas } from '@fortawesome/free-solid-svg-icons'
|
||||||
|
import { listCompare } from "@/api/system/compare";
|
||||||
|
import { listSubdivision } from "@/api/system/subdivision";
|
||||||
|
import { agencyList, getAgencytype } from "@/api/system/agency";
|
||||||
|
import { getToken } from "@/utils/auth";
|
||||||
|
|
||||||
|
import {
|
||||||
|
|
||||||
|
addDepartment,
|
||||||
|
updateDepartment,
|
||||||
|
patientUpload,
|
||||||
|
getDepartmentList,
|
||||||
|
secondaryUpload,
|
||||||
|
} from "@/api/system/department";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SearchFilter',
|
name: 'SearchFilter',
|
||||||
components: { Form, FormItem, Button },
|
components: { Form, FormItem, Button },
|
||||||
@ -41,16 +449,92 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
loading:false,
|
||||||
|
patientInfoList:[],
|
||||||
|
datalist:[],
|
||||||
|
openphone:false,
|
||||||
|
form: {},
|
||||||
|
uploadopen: false,
|
||||||
|
fileList: [],
|
||||||
|
records:true,
|
||||||
|
|
||||||
|
action: {
|
||||||
|
data: {
|
||||||
|
records: '',
|
||||||
|
},
|
||||||
|
|
||||||
|
headers: {
|
||||||
|
Authorization: "Bearer " + getToken(),
|
||||||
|
},
|
||||||
|
url: process.env.VUE_APP_BASE_API + "/manage/patientInfo/patientUpload",
|
||||||
|
},
|
||||||
|
open: false,
|
||||||
|
openadd: false,//添加弹框
|
||||||
|
formadd: {},//添加对象
|
||||||
collapsiable: false,
|
collapsiable: false,
|
||||||
fold: false,
|
fold: false,
|
||||||
// 最大展示数,默认3个,超过则隐藏,为0时不限制
|
// 最大展示数,默认3个,超过则隐藏,为0时不限制
|
||||||
maxShow: undefined,
|
maxShow: undefined,
|
||||||
|
rules: {
|
||||||
|
deptAliasVOS: {
|
||||||
|
departmentName: [
|
||||||
|
{ required: true, message: "科室不能为空", trigger: "blur" }
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
treeOptions: [],
|
||||||
|
// 细分
|
||||||
|
optionsubdivisionCategory: [],
|
||||||
|
// 标准科室对照4
|
||||||
|
compareList: [],
|
||||||
|
option: [],
|
||||||
|
options: [],
|
||||||
|
optionsparentDepartment: [],
|
||||||
|
departmentoptions: [],
|
||||||
|
nodeTypeoptions: [],
|
||||||
|
isResouceShow: 1,
|
||||||
|
indexadd: "",
|
||||||
|
showMask: false,//遮罩层
|
||||||
|
progress: 0,
|
||||||
|
// 表单校验--添加
|
||||||
|
rulesadd: {
|
||||||
|
nodeType: [
|
||||||
|
{ required: true, message: "节点类型不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
hospitalAgencyName: [
|
||||||
|
{ required: true, message: "所属机构不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
departmentName: [
|
||||||
|
{ required: true, message: "科室名称不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
departmentCode: [
|
||||||
|
{ required: true, message: "科室代码不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
departmentPhone: [
|
||||||
|
{
|
||||||
|
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
|
||||||
|
message: "请输入正确的科室电话",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
departmentMail: [
|
||||||
|
{
|
||||||
|
type: "email",
|
||||||
|
message: "请输入正确的邮箱地址",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// 通过最大显示个数控制展开/折叠
|
// 通过最大显示个数控制展开/折叠
|
||||||
this.minShowCtrol()
|
this.minShowCtrol()
|
||||||
this.$emit('fold', this.fold)
|
this.$emit('fold', this.fold)
|
||||||
|
const currentRoute = this.$router.currentRoute;
|
||||||
|
console.log(currentRoute, 'currentRoute')
|
||||||
|
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -65,6 +549,312 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleAvatarSuccess(response, file, fileList) {
|
||||||
|
console.log(response, file, fileList, 'response, file, fileList')
|
||||||
|
if (response.code == 500) {
|
||||||
|
this.$modal.msgError(response.msg);
|
||||||
|
|
||||||
|
}else if(response.code == 500_2){
|
||||||
|
this.openphone=true;
|
||||||
|
}
|
||||||
|
else if (response.code == 200 && !response.data) {
|
||||||
|
this.$modal.msgSuccess("导入成功");
|
||||||
|
this.$emit('handleRules')
|
||||||
|
} else if (response.code == 200 && response.data) {
|
||||||
|
this.form = response.data
|
||||||
|
this.open = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
this.uploadcancel();
|
||||||
|
|
||||||
|
this.fileList = [];
|
||||||
|
},
|
||||||
|
handleRemove(file, fileList) {
|
||||||
|
console.log(file, fileList);
|
||||||
|
},
|
||||||
|
handlePreview(file) {
|
||||||
|
console.log(file, '000000');
|
||||||
|
},
|
||||||
|
//导入相关的方法
|
||||||
|
submitUpload() {
|
||||||
|
console.log(this.action,'action')
|
||||||
|
if(this.records==true){
|
||||||
|
this.action.data.records=1
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.action.data.records=0
|
||||||
|
}
|
||||||
|
this.$refs.upload.submit();
|
||||||
|
},
|
||||||
|
//取消导入
|
||||||
|
uploadcancel() {
|
||||||
|
this.uploadopen = false;
|
||||||
|
},
|
||||||
|
/** 下载模板操作 */
|
||||||
|
importTemplate() {
|
||||||
|
this.download(
|
||||||
|
"/system/importDownload/downloadTemplate?fileType=patientInfoImport",
|
||||||
|
{},
|
||||||
|
`门诊随访记录 - 未随访.xlsx`
|
||||||
|
);
|
||||||
|
},
|
||||||
|
// 列表取消
|
||||||
|
cancelphone(){
|
||||||
|
this.openphone=false;
|
||||||
|
},
|
||||||
|
// 导入
|
||||||
|
handleUpload() {
|
||||||
|
// this.openphone=true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this.uploadopen = true;
|
||||||
|
this.records=true;
|
||||||
|
|
||||||
|
this.fileList = [];
|
||||||
|
this.form = {};
|
||||||
|
|
||||||
|
// this.showMask = true;
|
||||||
|
// this.progress = 0;
|
||||||
|
// this.timer = setInterval(() => {
|
||||||
|
// if (this.progress < 99) {
|
||||||
|
// this.progress += 5;
|
||||||
|
// } else {
|
||||||
|
// clearInterval(this.timer); // 停止计时器
|
||||||
|
// // 延时 1 秒后执行关闭遮罩或其他操作
|
||||||
|
// // setTimeout(() => {
|
||||||
|
// // this.showMask = false;
|
||||||
|
// // // 关闭遮罩或执行其他操作
|
||||||
|
// // }, 1000);
|
||||||
|
// }
|
||||||
|
// }, 2000); // 每 900 毫秒(0.9秒)增加 1% 进度
|
||||||
|
|
||||||
|
// this.$refs.form.resetFields();
|
||||||
|
// this.open = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 取消按钮
|
||||||
|
cancel() {
|
||||||
|
this.open = false;
|
||||||
|
// this.reset();
|
||||||
|
},
|
||||||
|
// 添加
|
||||||
|
additem(item, index) {
|
||||||
|
this.indexadd = index
|
||||||
|
this.reset();
|
||||||
|
this.gettreelist();
|
||||||
|
this.infocompare();
|
||||||
|
this.getinfolist();
|
||||||
|
this.getinfo();
|
||||||
|
this.info();
|
||||||
|
this.infodepartment();
|
||||||
|
this.infolist();
|
||||||
|
this.openadd = true
|
||||||
|
if (localStorage.getItem('roleKey') != 'admin') {
|
||||||
|
this.getLeafIds(this.treeOptions)
|
||||||
|
}
|
||||||
|
console.log(item, index, 'item')
|
||||||
|
// this.$emit('additem',item,index)
|
||||||
|
|
||||||
|
},
|
||||||
|
// 点击事件
|
||||||
|
changeway(e, index) {
|
||||||
|
console.log(e, index, 'e')
|
||||||
|
this.form.deptAliasVOS[index].departmentName = this.form.departments.find(f => f.id == e).departmentName
|
||||||
|
// this.form.deptAliasVOS[index].departmentId = e
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$forceUpdate()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getLeafIds(nodes) {
|
||||||
|
console.log(nodes, ';node')
|
||||||
|
|
||||||
|
this.formadd.hospitalAgencyIdtwo = JSON.parse(localStorage.getItem('user')).hospitalAgencyId;
|
||||||
|
|
||||||
|
let leafIds = [];
|
||||||
|
nodes.forEach(node => {
|
||||||
|
|
||||||
|
if (node.id == this.formadd.hospitalAgencyIdtwo) {
|
||||||
|
this.formadd.hospitalAgencyName = node.label;
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (node.children) {
|
||||||
|
// 如果有子节点,递归调用getLeafIds
|
||||||
|
leafIds = leafIds.concat(this.getLeafIds(node.children));
|
||||||
|
} else {
|
||||||
|
// 如果没有子节点,取当前节点的id
|
||||||
|
leafIds.push(node.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
return leafIds;
|
||||||
|
},
|
||||||
|
// 所属机构
|
||||||
|
gettreelist() {
|
||||||
|
agencyList().then((res) => {
|
||||||
|
// 接口请求
|
||||||
|
this.treeOptions = res.data.map((item) => {
|
||||||
|
return { value: item.id, ...item };
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 所属机构
|
||||||
|
change(e) {
|
||||||
|
console.log(this.formadd.hospitalAgencyIdtwo)
|
||||||
|
if (e) {
|
||||||
|
this.formadd.hospitalAgencyId = e[e.length - 1];
|
||||||
|
if (this.formadd.hospitalAgencyId) {
|
||||||
|
const arr = this.$refs["cascader"].getCheckedNodes()[0].pathLabels;
|
||||||
|
this.formadd.hospitalAgencyName = arr.slice(-1).join(",");
|
||||||
|
this.gethaveinfo(e[e.length - 1])
|
||||||
|
this.formadd.parentDepartmentId = ''
|
||||||
|
this.formadd.parentDepartmentName = ''
|
||||||
|
} else {
|
||||||
|
this.formadd.parentDepartmentId = ''
|
||||||
|
this.formadd.hospitalAgencyName = "";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.getinfo();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/** 查询标准科室对照信息列表 */
|
||||||
|
infocompare() {
|
||||||
|
this.loading = true;
|
||||||
|
listCompare(this.queryParamscompare).then((response) => {
|
||||||
|
this.compareList = response.rows;
|
||||||
|
// this.total = response.total;
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 细分类别
|
||||||
|
getinfolist() {
|
||||||
|
listSubdivision().then((res) => {
|
||||||
|
this.optionsubdivisionCategory = res.rows;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 上级科室
|
||||||
|
getinfo() {
|
||||||
|
getDepartmentList().then((res) => {
|
||||||
|
this.optionsparentDepartment = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 上级科室
|
||||||
|
changeparentDepartment(e) {
|
||||||
|
this.form.parentDepartmentId = e;
|
||||||
|
},
|
||||||
|
// 节点类型
|
||||||
|
info() {
|
||||||
|
var dictType = "department_node_type";
|
||||||
|
getAgencytype(dictType).then((res) => {
|
||||||
|
this.nodeTypeoptions = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 科室类型
|
||||||
|
infodepartment() {
|
||||||
|
var dictType = "department_type";
|
||||||
|
getAgencytype(dictType).then((res) => {
|
||||||
|
this.departmentoptions = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 服务类别
|
||||||
|
infolist() {
|
||||||
|
var dictType = "provide_service_category";
|
||||||
|
getAgencytype(dictType).then((res) => {
|
||||||
|
this.options = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 取消按钮
|
||||||
|
canceladd() {
|
||||||
|
this.openadd = false;
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
optionsubdivision(e) {
|
||||||
|
// this.form.subdivisionCategoryId = this.optionsubdivisionCategory.find(
|
||||||
|
// (e) => e.id == this.form.subdivisionCategoryId
|
||||||
|
// ).subdivisionCategoryName;
|
||||||
|
// console.log(this.form.subdivisionCategoryName)
|
||||||
|
},
|
||||||
|
// 表单重置
|
||||||
|
reset() {
|
||||||
|
this.formadd = {
|
||||||
|
id: null,
|
||||||
|
parentDepartmentId: null,
|
||||||
|
hospitalAgencyId: null,
|
||||||
|
hospitalAgencyIdtwo: null,
|
||||||
|
hospitalAgencyName: null,
|
||||||
|
departmentName: null,
|
||||||
|
departmentCode: null,
|
||||||
|
departmentType: null,
|
||||||
|
departmentAbbreviation: null,
|
||||||
|
departmentPersonId: null,
|
||||||
|
departmentPersonName: null,
|
||||||
|
nodeType: null,
|
||||||
|
provideServiceCategory: null,
|
||||||
|
subdivisionCategoryId: null,
|
||||||
|
subdivisionCategoryName: null,
|
||||||
|
normDepartmentCompareId: null,
|
||||||
|
normDepartmentCompareName: null,
|
||||||
|
prepareBedsCount: null,
|
||||||
|
departmentPhone: null,
|
||||||
|
departmentMail: null,
|
||||||
|
establishDate: null,
|
||||||
|
revokeDate: null,
|
||||||
|
createBy: null,
|
||||||
|
createTime: null,
|
||||||
|
updateBy: null,
|
||||||
|
updateTime: null,
|
||||||
|
parentDepartmentName: null,
|
||||||
|
};
|
||||||
|
this.resetForm("formadd");
|
||||||
|
},
|
||||||
|
/** 提交按钮 --添加*/
|
||||||
|
submitFormadd() {
|
||||||
|
let reg = new RegExp("-", "g");
|
||||||
|
if (this.formadd.establishDate && this.formadd.revokeDate && new Date(this.formadd.establishDate.replace(reg, "/")) >
|
||||||
|
new Date(this.formadd.revokeDate.replace(reg, "/"))) {
|
||||||
|
this.$message.error("撤销日期要大于成立日期");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.$refs["formadd"].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
if (!this.formadd.hospitalAgencyId) {
|
||||||
|
this.formadd.hospitalAgencyId = this.formadd.hospitalAgencyIdtwo
|
||||||
|
}
|
||||||
|
// this.formadd.hospitalAgencyId = this.formadd.hospitalAgencyIdtwo
|
||||||
|
var obj = {
|
||||||
|
departmentName: this.formadd.departmentName,
|
||||||
|
id: ''
|
||||||
|
}
|
||||||
|
this.form.departments.push(obj)
|
||||||
|
this.form.deptAliasVOS[this.indexadd].departmentName = this.formadd.departmentName
|
||||||
|
console.log(this.formadd, 'this.formadd')
|
||||||
|
addDepartment(this.formadd).then((response) => {
|
||||||
|
this.$modal.msgSuccess("添加成功");
|
||||||
|
this.openadd = false;
|
||||||
|
// this.getList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm() {
|
||||||
|
console.log(this.form, 'this.form确定')
|
||||||
|
this.$refs["form"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
secondaryUpload(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess("保存成功");
|
||||||
|
this.open = false;
|
||||||
|
this.$emit('handleRules')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
// 屏幕resize监听
|
// 屏幕resize监听
|
||||||
screenChange() {
|
screenChange() {
|
||||||
// 屏幕resize监听事件:一旦屏幕宽高发生变化,就会执行resize
|
// 屏幕resize监听事件:一旦屏幕宽高发生变化,就会执行resize
|
||||||
@ -110,7 +900,140 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.item-search-form {
|
||||||
::v-deep .el-form-item {
|
::v-deep .el-form-item {
|
||||||
height: 28px !important;
|
height: 28px !important;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
::v-deep .el-checkbox__label{
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
::v-deep .el-checkbox__inner{
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
.el-cascader .el-input input::-webkit-input-placeholder {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nameinformation {
|
||||||
|
border-left: 3px solid #4d9de7;
|
||||||
|
width: 200px;
|
||||||
|
height: 20px;
|
||||||
|
padding-left: 10px;
|
||||||
|
font-size: 18px;
|
||||||
|
// margin-top: 8px;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin: 22px;
|
||||||
|
}
|
||||||
|
.el-cascader .el-input input::-webkit-input-placeholder {
|
||||||
|
color: #686a6d;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 遮罩层
|
||||||
|
.mask {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(255, 255, 255, 0.7); /* 半透明背景 */
|
||||||
|
// display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 1000; /* 确保遮罩层在顶部 */
|
||||||
|
.maskimg {
|
||||||
|
position: absolute;
|
||||||
|
// top: 49%;
|
||||||
|
top: 45%;
|
||||||
|
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
.text {
|
||||||
|
position: absolute;
|
||||||
|
left: 19%;
|
||||||
|
width: 123px;
|
||||||
|
// color: #1989fa;
|
||||||
|
color: #f28e01;
|
||||||
|
}
|
||||||
|
// 加载
|
||||||
|
.newloding {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
position: relative;
|
||||||
|
height: 40px;
|
||||||
|
// background: beige;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
.progress-bar {
|
||||||
|
position: absolute;
|
||||||
|
top: 23px;
|
||||||
|
width: 100%;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
background-color: rgb(255, 237, 212);
|
||||||
|
.inner {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
border-radius: 6px;
|
||||||
|
height: 12px;
|
||||||
|
width: 100px;
|
||||||
|
background: #f28e01;
|
||||||
|
transition: left 1s ease-in-out;
|
||||||
|
// animation: shrink 5s linear infinite;
|
||||||
|
animation: changeWidth 1s forwards linear, shrink 1s linear infinite;
|
||||||
|
background-image: url(~@/assets/images/jd.png);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.progress {
|
||||||
|
width: 0%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #00aaff;
|
||||||
|
transition: width 1s ease-in-out;
|
||||||
|
}
|
||||||
|
.runner {
|
||||||
|
width: 60px;
|
||||||
|
height: 24px;
|
||||||
|
background-image: url(~@/assets/images/run.gif);
|
||||||
|
background-size: contain;
|
||||||
|
position: absolute;
|
||||||
|
top: -27px;
|
||||||
|
transition: left 1s ease-in-out;
|
||||||
|
animation: run 1s forwards linear;
|
||||||
|
margin-left: -55px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes run {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: var(--left);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes changeWidth {
|
||||||
|
0% {
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
width: var(--left);
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes shrink {
|
||||||
|
0% {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
544
src/views/manage/Patientmanagement/index.vue
Normal file
544
src/views/manage/Patientmanagement/index.vue
Normal file
@ -0,0 +1,544 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container" ref="layout">
|
||||||
|
<div ref="topform" class="form">
|
||||||
|
<SearchFilter :labelWidths="280" labelWidth="90px" size="small" @search="handleQuery"
|
||||||
|
@reset="resetQuery" @minShowCtrol="getMaxTableHeight" @handleRules="handleRules">
|
||||||
|
|
||||||
|
<el-form-item label="患者姓名" prop="patientName">
|
||||||
|
<el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="handleQuery"
|
||||||
|
style="width: 200px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="患者电话" prop="patientPhone">
|
||||||
|
<el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable @keyup.enter.native="handleQuery"
|
||||||
|
style="width: 200px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="身份证号" prop="cardNo">
|
||||||
|
<el-input v-model="queryParams.cardNo" placeholder="请输入患者身份证号" clearable @keyup.enter.native="handleQuery"
|
||||||
|
style="width: 200px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="诊断" prop="mainDiagnosis">
|
||||||
|
<el-input v-model="queryParams.mainDiagnosis" placeholder="请输入诊断" clearable style="width: 200px"
|
||||||
|
@keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="患者来源" prop="patientSource">
|
||||||
|
<el-select v-model="queryParams.patientSource" placeholder="请选择患者来源" clearable style="width: 200px">
|
||||||
|
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="就诊方式" prop="visitMethod">
|
||||||
|
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width: 200px">
|
||||||
|
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="就诊时间" prop="visitDateStart">
|
||||||
|
<el-date-picker v-model="visitDate" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||||
|
style="width: 200px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="医院" prop="hospitalAgencyId">
|
||||||
|
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width: 200px"
|
||||||
|
clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
|
||||||
|
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="院区" prop="campusAgencyId">
|
||||||
|
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width: 200px" clearable
|
||||||
|
@clear="clearcampusAgency" @change="changecampusAgency">
|
||||||
|
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="科室" prop="departmentId">
|
||||||
|
<el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width: 200px" clearable
|
||||||
|
@clear="cleardepartment" @change="changedepartment">
|
||||||
|
<el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="病区" prop="wardId">
|
||||||
|
<el-select v-model="queryParams.wardId" filterable placeholder="请选择病区" style="width: 200px" clearable>
|
||||||
|
<el-option v-for="item in wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="主治医生" prop="attendingPhysicianId">
|
||||||
|
<el-select v-model="queryParams.attendingPhysicianId" style="width: 200px" filterable placeholder="请选择主治医生"
|
||||||
|
clearable>
|
||||||
|
<el-option v-for="item in attendingPhysicianlist" :key="item.userId" :label="item.nickName"
|
||||||
|
:value="item.userId">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- <el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item> -->
|
||||||
|
</SearchFilter>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div ref="table">
|
||||||
|
<el-table :max-height="maxTableHeight" v-loading="loading" :data="patientInfoList">
|
||||||
|
<el-table-column label="序号" type="index" width="48" align="center" />
|
||||||
|
<el-table-column label="患者姓名" align="center" prop="patientName" />
|
||||||
|
<el-table-column label="患者电话" align="center" prop="patientPhone" width="120" />
|
||||||
|
<el-table-column label="性别" align="center" prop="sex">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.sex == "MALE" ? "男" : "" }}
|
||||||
|
{{ scope.row.sex == "FEMALE" ? "女" : "" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="年龄" align="center" prop="age" />
|
||||||
|
<el-table-column label="出生日期" align="center" prop="birthDate" width="130" />
|
||||||
|
<!-- <el-table-column label="签约状态" align="center" prop="signStatus">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="签约时间" align="center" prop="signTime" width='130'>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ parseTime(scope.row.signTime, '{y}-{m}-{d}') }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
<!-- <el-table-column label="开证医生" align="center" prop="certificateIssuingDoctor" /> -->
|
||||||
|
<el-table-column label="就诊时间" align="center" prop="visitDate" width="130">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ parseTime(scope.row.visitDate, "{y}-{m}-{d}") }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
|
||||||
|
<!-- <el-table-column label="入院时间" align="center" prop="admissionTime" width='130' /> -->
|
||||||
|
<el-table-column label="医院" align="center" prop="hospitalAgencyName" width="130" />
|
||||||
|
<el-table-column label="院区" align="center" prop="campusAgencyName" width="130" />
|
||||||
|
<el-table-column label="科室名称" align="center" prop="departmentName" width="130" />
|
||||||
|
<el-table-column label="病区名称" align="center" prop="wardName" width="130" />
|
||||||
|
<el-table-column label="住院/门诊号" align="center" prop="inHospitalNumber" width="130" />
|
||||||
|
<el-table-column label="主治医生" align="center" prop="attendingPhysicianName" />
|
||||||
|
<el-table-column label="就诊方式" align="center" prop="visitMethod">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column label="出院方式" align="center" prop="dischargeMethod" /> -->
|
||||||
|
<el-table-column label="患者来源" align="center" prop="patientSource">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.patient_source" :value="scope.row.patientSource" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="住址" align="center" prop="address" />
|
||||||
|
<!-- class-name="small-padding fixed-width" fixed="right" -->
|
||||||
|
<el-table-column label="操作" align="center" fixed="right">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||||
|
v-hasPermi="['manage:patientInfo:edit']">修改</el-button>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||||
|
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
|
||||||
|
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
|
||||||
|
<el-button size="mini" type="text" @click="handleedit(scope.row)">画像编辑</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
|
||||||
|
:indexFromWrap="queryParams.pageNum" :indexFrom="indexFrom" @updateCPage="updateCPage"></myPagination>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getPatientList } from "@/api/manage/patientInfo";
|
||||||
|
import { getAge } from "@/utils/age";
|
||||||
|
import {
|
||||||
|
selectAgencyList,
|
||||||
|
getDepartmentList,
|
||||||
|
getAgencyList,
|
||||||
|
} from "@/api/manage/selectAgencyList";
|
||||||
|
import { usergetList } from "@/api/unitconfig/patientConfiguration";
|
||||||
|
import SearchFilter from "../../components/SearchForm.vue";
|
||||||
|
import cardlist from "../components/cardlist.vue";
|
||||||
|
export default {
|
||||||
|
name: "PatientInfo",
|
||||||
|
dicts: ["patient_type", "visit_method", "sign_status", "patient_source"],
|
||||||
|
components: { SearchFilter, cardlist },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
indexFrom: "",
|
||||||
|
searchData: {},
|
||||||
|
maxTableHeight: undefined,
|
||||||
|
attendingPhysicianlist: [],
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 患者信息表格数据
|
||||||
|
patientInfoList: [],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
patientName: null,
|
||||||
|
patientPhone: null,
|
||||||
|
birthDate: null,
|
||||||
|
patientType: null,
|
||||||
|
visitMethod: null,
|
||||||
|
mainDiagnosis: null,
|
||||||
|
attendingPhysicianId: null,
|
||||||
|
hospitalAgencyId: null,
|
||||||
|
hospitalAgencyName: null,
|
||||||
|
campusAgencyId: null,
|
||||||
|
campusAgencyName: null,
|
||||||
|
departmentId: null,
|
||||||
|
departmentName: null,
|
||||||
|
wardId: null,
|
||||||
|
wardName: null,
|
||||||
|
surgicalName: null,
|
||||||
|
admissionTimeStart: null,
|
||||||
|
admissionTimeEnd: null,
|
||||||
|
outpatientNumber: null,
|
||||||
|
visitDateStart: null,
|
||||||
|
visitDateEnd: null,
|
||||||
|
dischargeMethod: null,
|
||||||
|
patientSource: null,
|
||||||
|
},
|
||||||
|
visitDate: [],
|
||||||
|
admissionTime: [],
|
||||||
|
//医院list
|
||||||
|
hospitalAgencylist: [],
|
||||||
|
// 院区list
|
||||||
|
campusAgencylist: [],
|
||||||
|
//科室list
|
||||||
|
departmentlist: [],
|
||||||
|
//病区list
|
||||||
|
wardlist: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
type: {
|
||||||
|
handler(val) {
|
||||||
|
// if (val == "table") {
|
||||||
|
// this.queryParams.pageSize = 10;
|
||||||
|
// this.indexFrom = "";
|
||||||
|
// } else if (val == "card") {
|
||||||
|
// this.indexFrom = 100;
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList();
|
||||||
|
|
||||||
|
this.selectAgencyinfo();
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getMaxTableHeight();
|
||||||
|
this.screenChange();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateCPage(index, size) {
|
||||||
|
this.queryParams.pageNum = index;
|
||||||
|
this.queryParams.pageSize = size;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
//主治医生
|
||||||
|
usergetListinfo() {
|
||||||
|
usergetList({
|
||||||
|
hospitalAgencyId: this.queryParams.hospitalAgencyId,
|
||||||
|
postName: "DOCTOR",
|
||||||
|
}).then((res) => {
|
||||||
|
this.attendingPhysicianlist = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 详情操作 */
|
||||||
|
handleAuthRole(row) {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/patient/patientdetails",
|
||||||
|
query: {
|
||||||
|
path: "/patient/patientInfo",
|
||||||
|
patientId: row.id,
|
||||||
|
patientName: row.patientName,
|
||||||
|
patientPhone: row.patientPhone,
|
||||||
|
familyMemberPhone: row.familyMemberPhone,
|
||||||
|
cardNo: row.cardNo,
|
||||||
|
address: row.address,
|
||||||
|
mainDiagnosis: row.mainDiagnosis,
|
||||||
|
hospitalAgencyName: row.hospitalAgencyName,
|
||||||
|
campusAgencyName: row.campusAgencyName,
|
||||||
|
departmentName: row.departmentName,
|
||||||
|
wardName: row.wardName,
|
||||||
|
certificateIssuingDoctorName: row.certificateIssuingDoctorName,
|
||||||
|
appointmentTreatmentGroup: row.appointmentTreatmentGroup,
|
||||||
|
responsibleNurse: row.responsibleNurse,
|
||||||
|
registrationNo: row.registrationNo,
|
||||||
|
registrationDate: row.registrationDate,
|
||||||
|
appointmentDate: row.appointmentDate,
|
||||||
|
|
||||||
|
sex: row.sex,
|
||||||
|
birthDate: row.birthDate,
|
||||||
|
patientSource: row.patientSource,
|
||||||
|
createTime: row.createTime,
|
||||||
|
age: row.birthDate ? getAge(row.birthDate) : "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 画像编辑
|
||||||
|
handleedit(row) {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/patient/Portraitedit",
|
||||||
|
query: {
|
||||||
|
path: "/patient/patientInfo",
|
||||||
|
patientId: row.id,
|
||||||
|
cardNo: row.cardNo,
|
||||||
|
patientName: row.patientName,
|
||||||
|
patientPhone: row.patientPhone,
|
||||||
|
sex: row.sex,
|
||||||
|
birthDate: row.birthDate,
|
||||||
|
familyMemberPhone: row.familyMemberPhone,
|
||||||
|
address: row.address,
|
||||||
|
patientSource: row.patientSource,
|
||||||
|
createTime: row.createTime,
|
||||||
|
hospitalAgencyName: row.hospitalAgencyName,
|
||||||
|
mainDiagnosis: row.mainDiagnosis,
|
||||||
|
age: row.birthDate ? getAge(row.birthDate) : "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 查询患者信息列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true;
|
||||||
|
this.queryParams.params = {};
|
||||||
|
const loading = this.$loading({
|
||||||
|
lock: true,
|
||||||
|
text: "数据加载中",
|
||||||
|
spinner: "el-icon-loading",
|
||||||
|
background: "rgba(0, 0, 0, 0.7)",
|
||||||
|
});
|
||||||
|
getPatientList(this.queryParams).then((response) => {
|
||||||
|
response.rows.forEach((e) => {
|
||||||
|
e.birthDate ? (e.age = getAge(e.birthDate)) : "";
|
||||||
|
});
|
||||||
|
|
||||||
|
this.patientInfoList = response.rows;
|
||||||
|
console.log(this.patientInfoList,'this.patientInfoList')
|
||||||
|
this.total = response.total;
|
||||||
|
loading.close();
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleRules(){
|
||||||
|
console.log('this.patientInfoList')
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
if (this.visitDate?.length > 0) {
|
||||||
|
this.queryParams.visitDateStart = this.visitDate[0];
|
||||||
|
this.queryParams.visitDateEnd = this.visitDate[1];
|
||||||
|
} else {
|
||||||
|
this.queryParams.visitDateStart = null;
|
||||||
|
this.queryParams.visitDateEnd = null;
|
||||||
|
}
|
||||||
|
if (this.admissionTime?.length > 0) {
|
||||||
|
this.queryParams.admissionTimeStart = this.admissionTime[0];
|
||||||
|
this.queryParams.admissionTimeEnd = this.admissionTime[1];
|
||||||
|
} else {
|
||||||
|
this.queryParams.admissionTimeStart = null;
|
||||||
|
this.queryParams.admissionTimeEnd = null;
|
||||||
|
}
|
||||||
|
this.queryParams.pageNum = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
};
|
||||||
|
// if (this.type == "card") {
|
||||||
|
// this.queryParams = {
|
||||||
|
// pageNum: 1,
|
||||||
|
// pageSize: 100,
|
||||||
|
// };
|
||||||
|
// } else {
|
||||||
|
// this.queryParams = {
|
||||||
|
// pageNum: 1,
|
||||||
|
// pageSize: 10,
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
|
||||||
|
this.admissionTime = [];
|
||||||
|
this.queryParams.admissionTimeStart = null;
|
||||||
|
this.queryParams.admissionTimeEnd = null;
|
||||||
|
this.visitDate = [];
|
||||||
|
this.queryParams.visitDateStart = null;
|
||||||
|
this.queryParams.visitDateEnd = null;
|
||||||
|
this.handleQuery();
|
||||||
|
},
|
||||||
|
selectAgencyinfo() {
|
||||||
|
let query = {
|
||||||
|
agencyStatus: "ON",
|
||||||
|
nodeType: "HOSPITAL",
|
||||||
|
};
|
||||||
|
selectAgencyList(query).then((res) => {
|
||||||
|
this.hospitalAgencylist = res.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//获取下级单位
|
||||||
|
getAgencyListinfo(nodeType, id) {
|
||||||
|
let query = {
|
||||||
|
nodeType: nodeType,
|
||||||
|
};
|
||||||
|
if (nodeType == "HOSPITAL") {
|
||||||
|
query.hospitalId = id;
|
||||||
|
} else if (nodeType == "CAMPUS") {
|
||||||
|
query.campusId = id;
|
||||||
|
} else if (nodeType == "DEPARTMENT") {
|
||||||
|
query.departmentId = id;
|
||||||
|
}
|
||||||
|
getAgencyList(query).then((res) => {
|
||||||
|
if (nodeType == "HOSPITAL") {
|
||||||
|
this.campusAgencylist = res.data.campusList;
|
||||||
|
this.departmentlist = res.data.departmentList;
|
||||||
|
} else if (nodeType == "CAMPUS") {
|
||||||
|
this.departmentlist = res.data.departmentList;
|
||||||
|
}
|
||||||
|
this.wardlist = res.data.wardList;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//选中医院获取院区
|
||||||
|
changehospitalAgency(id) {
|
||||||
|
this.getAgencyListinfo("HOSPITAL", id);
|
||||||
|
// let query = {
|
||||||
|
// agencyStatus: 'ON',
|
||||||
|
// nodeType: 'CAMPUS',
|
||||||
|
// parentId: id,
|
||||||
|
// }
|
||||||
|
// selectAgencyList(query).then(res => {
|
||||||
|
// this.campusAgencylist = res.data
|
||||||
|
this.queryParams.campusAgencyId = null;
|
||||||
|
this.queryParams.departmentId = null;
|
||||||
|
this.queryParams.wardId = null;
|
||||||
|
this.queryParams.attendingPhysicianId = null;
|
||||||
|
// })
|
||||||
|
//医生
|
||||||
|
this.usergetListinfo();
|
||||||
|
},
|
||||||
|
//选中院区获取科室
|
||||||
|
changecampusAgency(id) {
|
||||||
|
this.getAgencyListinfo("CAMPUS", id);
|
||||||
|
// let query = {
|
||||||
|
// nodeType: 'DEPARTMENT',
|
||||||
|
// hospitalAgencyId: id,
|
||||||
|
// }
|
||||||
|
// getDepartmentList(query).then(res => {
|
||||||
|
// this.departmentlist = res.data
|
||||||
|
this.queryParams.departmentId = null;
|
||||||
|
this.queryParams.wardId = null;
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
//选中科室获取病区
|
||||||
|
changedepartment(id) {
|
||||||
|
this.getAgencyListinfo("DEPARTMENT", id);
|
||||||
|
// let query = {
|
||||||
|
// nodeType: 'WARD',
|
||||||
|
// parentDepartmentId: id,
|
||||||
|
// }
|
||||||
|
// getDepartmentList(query).then(res => {
|
||||||
|
// this.wardlist = res.data
|
||||||
|
this.queryParams.wardId = null;
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
//清空医院
|
||||||
|
clearhospitalAgency() {
|
||||||
|
this.queryParams.campusAgencyId = null;
|
||||||
|
this.queryParams.departmentId = null;
|
||||||
|
this.queryParams.wardId = null;
|
||||||
|
this.queryParams.attendingPhysicianId = null;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.attendingPhysicianlist = [];
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
//清空院区
|
||||||
|
clearcampusAgency() {
|
||||||
|
this.queryParams.departmentId = null;
|
||||||
|
this.queryParams.wardId = null;
|
||||||
|
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
|
||||||
|
},
|
||||||
|
//清空科室
|
||||||
|
cleardepartment() {
|
||||||
|
this.queryParams.wardId = null;
|
||||||
|
if (this.queryParams.departmentId) {
|
||||||
|
this.getAgencyListinfo("DEPARTMENT", this.queryParams.departmentId);
|
||||||
|
} else if (this.queryParams.campusAgencyId) {
|
||||||
|
this.getAgencyListinfo("CAMPUS", this.queryParams.campusAgencyId);
|
||||||
|
} else if (this.queryParams.hospitalAgencyId) {
|
||||||
|
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取表格最高高度
|
||||||
|
getMaxTableHeight() {
|
||||||
|
const windowInnerHeight = window.innerHeight; // 屏幕可视高度
|
||||||
|
const layoutDiv = this.$refs.layout;
|
||||||
|
const formDiv = this.$refs.topform;
|
||||||
|
const mb8Div = this.$refs.mb8;
|
||||||
|
this.maxTableHeight =
|
||||||
|
windowInnerHeight -
|
||||||
|
134 -
|
||||||
|
this.getBoxPadding(layoutDiv) -
|
||||||
|
this.getBoxHeight(mb8Div) -
|
||||||
|
this.getBoxHeight(formDiv);
|
||||||
|
},
|
||||||
|
// 屏幕resize监听
|
||||||
|
screenChange() {
|
||||||
|
// 屏幕resize监听事件:一旦屏幕宽高发生变化,就会执行resize
|
||||||
|
window.addEventListener("resize", this.getMaxTableHeight, true);
|
||||||
|
// 将屏幕监听事件移除
|
||||||
|
// 这步是必须的。离开页面时不移除,再返回,或者进入到别的有相同元素的页面会报错
|
||||||
|
// 或者将这里的方法直接写在beforeDestroy函数中也可以
|
||||||
|
this.$once("hook:beforeDestroy", () => {
|
||||||
|
window.removeEventListener("resize", this.getMaxTableHeight, true);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.cardlist {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-content: flex-start;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carditem {
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
width: 260px;
|
||||||
|
min-height: 200px;
|
||||||
|
border: 1px solid #dcdfe6;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table__body-wrapper {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
::v-deep .el-form{
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.form {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user