|
|
|
@ -6,7 +6,7 @@ |
|
|
|
:inline="true" |
|
|
|
label-width="68px" |
|
|
|
> |
|
|
|
<el-form-item label="关键字" prop="param.keywords"> |
|
|
|
<el-form-item label="关键字" prop="param.searchValue"> |
|
|
|
<el-input |
|
|
|
v-model="queryParams.param.searchValue" |
|
|
|
placeholder="姓名|手机号|身份证号等" |
|
|
|
@ -15,7 +15,7 @@ |
|
|
|
@keyup.enter.native="handleQuery" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="医院" prop="param.hospital"> |
|
|
|
<!-- <el-form-item label="医院" prop="param.hospital"> |
|
|
|
<el-select |
|
|
|
v-model="queryParams.param.hospitalId" |
|
|
|
clearable |
|
|
|
@ -28,13 +28,13 @@ |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="创建时间" prop="param.createTime"> |
|
|
|
</el-form-item> --> |
|
|
|
<el-form-item label="时间范围" prop="param.time"> |
|
|
|
<el-date-picker |
|
|
|
v-model="queryParams.param.createTime" |
|
|
|
type="datetimerange" |
|
|
|
v-model="queryParams.param.time" |
|
|
|
type="daterange" |
|
|
|
size="small" |
|
|
|
value-format="yyyy-MM-dd HH:mm:ss" |
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
range-separator="至" |
|
|
|
start-placeholder="开始时间" |
|
|
|
end-placeholder="结束时间" |
|
|
|
@ -65,18 +65,8 @@ |
|
|
|
>新增 |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1.5" v-hasPermi="['tms:patient:edit']"> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
plain |
|
|
|
icon="el-icon-edit" |
|
|
|
size="mini" |
|
|
|
:disabled="single" |
|
|
|
@click="handleEdit" |
|
|
|
>修改 |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1.5" v-hasPermi="['tms:patient:remove']"> |
|
|
|
|
|
|
|
<!-- <el-col :span="1.5" v-hasPermi="['tms:patient:remove']"> |
|
|
|
<el-button |
|
|
|
type="danger" |
|
|
|
plain |
|
|
|
@ -86,30 +76,8 @@ |
|
|
|
@click="handleDelete" |
|
|
|
>删除 |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1.5" v-hasPermi="['tms:patient:import']"> |
|
|
|
<el-button |
|
|
|
type="warning" |
|
|
|
plain |
|
|
|
icon="el-icon-upload2" |
|
|
|
size="mini" |
|
|
|
:loading="exportLoading" |
|
|
|
@click="handleReport" |
|
|
|
>导入患者信息(医科大学流调) |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1.5" v-hasPermi="['tms:patient:import']"> |
|
|
|
<el-button |
|
|
|
type="warning" |
|
|
|
plain |
|
|
|
icon="el-icon-upload2" |
|
|
|
size="mini" |
|
|
|
:loading="exportLoading" |
|
|
|
@click="handleReport1" |
|
|
|
>导入患者信息(殷家堡) |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1.5" v-hasPermi="['tms:patient:import']"> |
|
|
|
</el-col> --> |
|
|
|
<!-- <el-col :span="1.5" v-hasPermi="['tms:patient:import']"> |
|
|
|
<el-button |
|
|
|
type="warning" |
|
|
|
plain |
|
|
|
@ -120,18 +88,17 @@ |
|
|
|
>导入体检报告 |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
--> |
|
|
|
<el-col :span="1.5" v-hasPermi="['tms:patient:export']"> |
|
|
|
<el-button |
|
|
|
type="warning" |
|
|
|
plain |
|
|
|
icon="el-icon-download" |
|
|
|
size="mini" |
|
|
|
:loading="exportLoading" |
|
|
|
@click="handleExport" |
|
|
|
>导出患者信息 |
|
|
|
>导出 |
|
|
|
</el-button> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<!-- <el-col :span="1.5" v-hasPermi="['tms:patient:import']"> |
|
|
|
<el-button |
|
|
|
type="warning" |
|
|
|
@ -177,6 +144,216 @@ |
|
|
|
{{ scope.row.sex == 0 ? "男" : "女" }} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="出生日期" |
|
|
|
align="left" |
|
|
|
prop="birthday" |
|
|
|
key="birthday" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="受教育程度" |
|
|
|
align="center" |
|
|
|
prop="educationalStatus" |
|
|
|
key="educationalStatus" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.educationalStatus" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in educationalStates" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="职业类型" |
|
|
|
align="center" |
|
|
|
prop="career" |
|
|
|
key="career" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.career" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in careers" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="婚姻状况" |
|
|
|
align="center" |
|
|
|
prop="maritalStatus" |
|
|
|
key="maritalStatus" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.maritalStatus" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in maritalStates" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="居住状态" |
|
|
|
align="center" |
|
|
|
prop="dwellingState" |
|
|
|
key="dwellingState" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.dwellingState" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in dwellingStates" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="民族" |
|
|
|
align="center" |
|
|
|
prop="nation" |
|
|
|
key="nation" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.nation" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="(status, index) in nationList" |
|
|
|
:key="index" |
|
|
|
:value="status.name" |
|
|
|
:label="status.name" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="籍贯" |
|
|
|
align="center" |
|
|
|
prop="nativePlace" |
|
|
|
key="nativePlace" |
|
|
|
width="120" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="现住址" |
|
|
|
align="center" |
|
|
|
prop="address" |
|
|
|
key="address" |
|
|
|
width="200" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="联系人名称" |
|
|
|
align="center" |
|
|
|
prop="contactName" |
|
|
|
key="contactName" |
|
|
|
width="120" |
|
|
|
></el-table-column> |
|
|
|
<!-- <el-table-column |
|
|
|
label="联系人电话" |
|
|
|
align="center" |
|
|
|
prop="contactMobile" |
|
|
|
key="contactMobile" |
|
|
|
width="120" |
|
|
|
></el-table-column> --> |
|
|
|
<el-table-column |
|
|
|
label="与联系人关系" |
|
|
|
align="center" |
|
|
|
prop="contactRelation" |
|
|
|
key="contactRelation" |
|
|
|
width="120" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="信仰" |
|
|
|
align="center" |
|
|
|
prop="belief" |
|
|
|
key="belief" |
|
|
|
width="120" |
|
|
|
></el-table-column> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
label="爱好" |
|
|
|
align="center" |
|
|
|
prop="hobby" |
|
|
|
key="hobby" |
|
|
|
width="120" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="ABO血型" |
|
|
|
align="center" |
|
|
|
prop="aboBloodType" |
|
|
|
key="aboBloodType" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.aboBloodType" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in ABOBloodTypes" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="Rh血型" |
|
|
|
align="center" |
|
|
|
prop="rhBloodType" |
|
|
|
key="rhBloodType" |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-select |
|
|
|
class="table-select" |
|
|
|
v-model="scope.row.rhBloodType" |
|
|
|
placeholder="-" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in RHBloodTypes" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<!-- <el-table-column |
|
|
|
label="身份证号" |
|
|
|
align="center" |
|
|
|
@ -208,19 +385,30 @@ |
|
|
|
align="center" |
|
|
|
prop="lastEvaluationTime" |
|
|
|
key="lastEvaluationTime" |
|
|
|
width="200" |
|
|
|
fixed="right" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="创建人" |
|
|
|
align="center" |
|
|
|
prop="createBy" |
|
|
|
key="createBy" |
|
|
|
fixed="right" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
label="创建时间" |
|
|
|
align="center" |
|
|
|
prop="createTime" |
|
|
|
key="createTime" |
|
|
|
fixed="right" |
|
|
|
></el-table-column> |
|
|
|
<el-table-column |
|
|
|
<!-- <el-table-column |
|
|
|
label="操作" |
|
|
|
align="center" |
|
|
|
prop="department" |
|
|
|
key="department" |
|
|
|
width="260" |
|
|
|
width="200" |
|
|
|
fixed="right" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button |
|
|
|
@ -252,7 +440,7 @@ |
|
|
|
删除 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> --> |
|
|
|
</el-table> |
|
|
|
<pagination |
|
|
|
v-show="total > 0" |
|
|
|
@ -355,10 +543,38 @@ import { getToken } from "@/utils/auth"; |
|
|
|
import { mapMutations } from "vuex"; |
|
|
|
import { getHosList } from "@/api/his/hospital"; |
|
|
|
import { patientList, delPatient } from "@/api/his/patient"; |
|
|
|
import { |
|
|
|
base as baseConfig, |
|
|
|
maritalStates, |
|
|
|
educationalStates, |
|
|
|
dwellingStates, |
|
|
|
independentLivingSkills, |
|
|
|
careers, |
|
|
|
handednesss, |
|
|
|
socialActives, |
|
|
|
gender, |
|
|
|
idCardTypes, |
|
|
|
ABOBloodTypes, |
|
|
|
RHBloodTypes, |
|
|
|
nationList, |
|
|
|
} from "./config"; |
|
|
|
export default { |
|
|
|
name: "Patient", |
|
|
|
data() { |
|
|
|
return { |
|
|
|
baseConfig, |
|
|
|
maritalStates, |
|
|
|
educationalStates, |
|
|
|
dwellingStates, |
|
|
|
independentLivingSkills, |
|
|
|
careers, |
|
|
|
handednesss, |
|
|
|
socialActives, |
|
|
|
gender, |
|
|
|
idCardTypes, |
|
|
|
ABOBloodTypes, |
|
|
|
RHBloodTypes, |
|
|
|
nationList, |
|
|
|
yjbOpen: false, |
|
|
|
physicaOpen: false, |
|
|
|
open: false, |
|
|
|
@ -376,7 +592,7 @@ export default { |
|
|
|
param: { |
|
|
|
searchValue: null, |
|
|
|
hospitalId: null, |
|
|
|
createTime: null, |
|
|
|
time: null, |
|
|
|
}, |
|
|
|
pageNum: 1, |
|
|
|
pageSize: 10, |
|
|
|
@ -500,15 +716,11 @@ export default { |
|
|
|
/** 查询患者列表 */ |
|
|
|
getList() { |
|
|
|
this.loading = true; |
|
|
|
if ( |
|
|
|
this.queryParams.param.createTime && |
|
|
|
this.queryParams.param.createTime.length |
|
|
|
) { |
|
|
|
this.queryParams.param.beginTime = this.queryParams.param.createTime[0]; |
|
|
|
this.queryParams.param.endTime = this.queryParams.param.createTime[1]; |
|
|
|
if (this.queryParams.param.time?.length) { |
|
|
|
this.queryParams.param.beginTime = this.queryParams.param.time[0]; |
|
|
|
this.queryParams.param.endTime = this.queryParams.param.time[1]; |
|
|
|
} |
|
|
|
patientList(this.queryParams).then((res) => { |
|
|
|
console.log("res: ", res); |
|
|
|
const { code, msg, data } = res; |
|
|
|
if (code === 200) { |
|
|
|
this.total = data.total; |
|
|
|
@ -524,7 +736,7 @@ export default { |
|
|
|
param: { |
|
|
|
searchValue: null, |
|
|
|
hospital: null, |
|
|
|
createTime: null, |
|
|
|
time: null, |
|
|
|
}, |
|
|
|
pageNum: 1, |
|
|
|
pageSize: 10, |
|
|
|
@ -577,12 +789,38 @@ export default { |
|
|
|
}, |
|
|
|
// 导出操作 |
|
|
|
handleExport() { |
|
|
|
this.$message.warning("导出"); |
|
|
|
if (this.queryParams.param.time?.length) { |
|
|
|
this.queryParams.param.beginTime = this.queryParams.param.time[0]; |
|
|
|
this.queryParams.param.endTime = this.queryParams.param.time[1]; |
|
|
|
} |
|
|
|
this.download1( |
|
|
|
"/pms/exportPatient", |
|
|
|
{ |
|
|
|
...this.queryParams, |
|
|
|
}, |
|
|
|
`患者数据导出${new Date().getTime()}.xlsx` |
|
|
|
); |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|
<style> |
|
|
|
<style scoped> |
|
|
|
.table-select { |
|
|
|
/* 禁止点击 */ |
|
|
|
pointer-events: none; |
|
|
|
} |
|
|
|
.table-select >>> .el-input__inner { |
|
|
|
border: none !important; |
|
|
|
padding: 0 !important; |
|
|
|
background: rgba(0, 0, 0, 0); |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
.table-select >>> input::placeholder { |
|
|
|
color: #606266 !important; |
|
|
|
} |
|
|
|
.table-select >>> .el-select__caret { |
|
|
|
display: none; |
|
|
|
} |
|
|
|
.wj-uploader .el-icon-upload:before { |
|
|
|
font-size: 100px; |
|
|
|
} |
|
|
|
|