Browse Source

患者列表

whszxyjhyy
lzp 1 month ago
parent
commit
3b68faa98d
  1. 1726
      web_admin/src/views/his/Patient/config.js
  2. 358
      web_admin/src/views/his/Patient/index.vue
  3. 4
      web_admin/src/views/statistics/components/title.vue
  4. 4
      web_admin/src/views/title.vue

1726
web_admin/src/views/his/Patient/config.js

File diff suppressed because it is too large

358
web_admin/src/views/his/Patient/index.vue

@ -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;
}

4
web_admin/src/views/statistics/components/title.vue

@ -1,5 +1,5 @@
<template>
<div class="title"><span></span>{{ title }}</div>
<div class="title1"><span></span>{{ title }}</div>
</template>
<script>
export default {
@ -19,7 +19,7 @@ export default {
};
</script>
<style scoped lang="scss">
.title {
.title1 {
font-weight: 600;
font-size: 20px;
color: #3d3d3d;

4
web_admin/src/views/title.vue

@ -1,5 +1,5 @@
<template>
<div class="title"><span></span>{{ title }}</div>
<div class="title1"><span></span>{{ title }}</div>
</template>
<script>
export default {
@ -19,7 +19,7 @@ export default {
};
</script>
<style scoped lang="scss">
.title {
.title1 {
font-weight: 600;
font-size: 20px;
color: #3d3d3d;

Loading…
Cancel
Save