Browse Source

优化模糊搜索框提示文字显示不全问题

newMaster
1747191978@qq.com 4 months ago
parent
commit
3dcfa71597
  1. 368
      acupuncture-前台/src/views/followFile/work.vue
  2. 3
      acupuncture-前台/src/views/medicalFile/index.vue
  3. 459
      acupuncture-前台/src/views/patientFile/index.vue
  4. 343
      acupuncture-后台/src/views/followFile/work.vue
  5. 3
      acupuncture-后台/src/views/medicalFile/index.vue
  6. 402
      acupuncture-后台/src/views/patientFile/index.vue

368
acupuncture-前台/src/views/followFile/work.vue

@ -1,117 +1,264 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="" prop="keywords">
<el-input v-model="queryParams.param.keywords" placeholder="支持姓名、全拼、简拼、手机号吗、证件号码" clearable
@keyup.enter.native="handleQuery" />
<el-input
style="width: 300px"
placeholder="姓名、全拼、简拼、手机号码、证件号码"
v-model="queryParams.param.keywords"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="childStatus">
<el-select v-model="queryParams.param.childStatus" clearable placeholder="请选择">
<el-select
v-model="queryParams.param.childStatus"
clearable
placeholder="请选择"
>
<el-option
v-for="item in childStatusList[queryParams.param.status]"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</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
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>
</el-form>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-tabs v-model="queryParams.param.status" @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-tabs>
<el-table v-loading="loading" :data="listDat" @selection-change="handleSelectionChange">
<el-table
v-loading="loading"
:data="listDat"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="工单id" fixed show-overflow-tooltip align="center" prop="id" min-width="200" />
<el-table-column fixed label="随访队列" show-overflow-tooltip align="center" prop="queueName" min-width="150" />
<el-table-column fixed label="患者姓名" align="center" prop="name" min-width="100" />
<el-table-column label="性别" align="center" prop="gender" show-overflow-tooltip min-width="60">
<el-table-column
label="工单id"
fixed
show-overflow-tooltip
align="center"
prop="id"
min-width="200"
/>
<el-table-column
fixed
label="随访队列"
show-overflow-tooltip
align="center"
prop="queueName"
min-width="150"
/>
<el-table-column
fixed
label="患者姓名"
align="center"
prop="name"
min-width="100"
/>
<el-table-column
label="性别"
align="center"
prop="gender"
show-overflow-tooltip
min-width="60"
>
<template slot-scope="scope">
<span v-if="scope.row.gender == 0"></span>
<span v-if="scope.row.gender == 1"></span>
</template>
</el-table-column>
<el-table-column label="年龄" align="center" prop="age" show-overflow-tooltip min-width="60" />
<el-table-column label="证件号码" align="center" prop="idCard" show-overflow-tooltip min-width="180" />
<el-table-column label="手机号码" align="center" prop="phone" show-overflow-tooltip min-width="150" />
<el-table-column label="随访次数" align="center" prop="times" show-overflow-tooltip min-width="150" />
<el-table-column label="开始时间" align="center" prop="startTime" show-overflow-tooltip min-width="150">
<el-table-column
label="年龄"
align="center"
prop="age"
show-overflow-tooltip
min-width="60"
/>
<el-table-column
label="证件号码"
align="center"
prop="idCard"
show-overflow-tooltip
min-width="180"
/>
<el-table-column
label="手机号码"
align="center"
prop="phone"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
label="随访次数"
align="center"
prop="times"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
label="开始时间"
align="center"
prop="startTime"
show-overflow-tooltip
min-width="150"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.startTime, "{y}-{m}-{d} {h}:{i}")
}}</span>
</template>
</el-table-column>
<el-table-column label="结束时间" align="center" prop="endTime" show-overflow-tooltip min-width="150">
<el-table-column
label="结束时间"
align="center"
prop="endTime"
show-overflow-tooltip
min-width="150"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}")
}}</span>
<span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<!--待随访 随访状态待随访/即将超期/超期 -->
<!--已随访 随访状态已随访/超随访期 -->
<!--待随访 随访状态待随访 -->
<el-table-column label="随访状态" align="center" prop="phone" show-overflow-tooltip min-width="150" fixed="right">
<el-table-column
label="随访状态"
align="center"
prop="phone"
show-overflow-tooltip
min-width="150"
fixed="right"
>
<template slot-scope="scope">
<span :class="classStatus[scope.row.status] ">{{ status[scope.row.status] }}</span>
<span :class="classStatus[scope.row.status]">{{
status[scope.row.status]
}}</span>
</template>
</el-table-column>
<el-table-column v-if="queryParams.param.status == 2" label="失访原因" align="center" prop="reason"
show-overflow-tooltip width="200" />
<el-table-column
v-if="queryParams.param.status == 2"
label="失访原因"
align="center"
prop="reason"
show-overflow-tooltip
width="200"
/>
<el-table-column fixed="right" label="操作" align="center" width="180">
<template slot-scope="scope">
<!-- 待随访 -->
<div v-if="queryParams.param.status == 0">
<el-button size="mini" type="text" icon="el-icon-s-check"
@click="handleFollow(scope.row)">
<el-button
size="mini"
type="text"
icon="el-icon-s-check"
@click="handleFollow(scope.row)"
>
去随访
</el-button>
<el-button size="mini" type="text" icon="el-icon-s-release"
@click="handleLossFollow(scope.row)">
<el-button
size="mini"
type="text"
icon="el-icon-s-release"
@click="handleLossFollow(scope.row)"
>
标记失访
</el-button>
</div>
<!-- 随访 -->
<el-button v-if="queryParams.param.status == 1" size="mini" type="text" icon="el-icon-s-check"
@click="handleDetails(scope.row)">
<el-button
v-if="queryParams.param.status == 1"
size="mini"
type="text"
icon="el-icon-s-check"
@click="handleDetails(scope.row)"
>
查看详情
</el-button>
<!-- 失访 -->
<el-button v-if="queryParams.param.status == 2" size="mini" type="text" icon="el-icon-s-check"
@click="handleBeFollow(scope.row)">
<el-button
v-if="queryParams.param.status == 2"
size="mini"
type="text"
icon="el-icon-s-check"
@click="handleBeFollow(scope.row)"
>
标记待随访
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 失访 -->
<el-dialog class="popup" title="标记失访" :visible.sync="open" width="780px" append-to-body>
<el-form class="formStep" ref="form" :model="form" :rules="rules" label-width="90px">
<el-dialog
class="popup"
title="标记失访"
:visible.sync="open"
width="780px"
append-to-body
>
<el-form
class="formStep"
ref="form"
:model="form"
:rules="rules"
label-width="90px"
>
<!-- <el-form-item label="随访次数" prop="times">
<el-input v-model="form.times" placeholder="请输入" />
</el-form-item> -->
<el-form-item label="失访原因" prop="reason">
<el-select v-model="form.reason" placeholder="请选择">
<el-option-group v-for="group in options" :key="group.label" :label="group.label">
<el-option v-for="item in group.options" :key="item.value" :label="item.label"
:value="item.value">
<el-option-group
v-for="group in options"
:key="group.label"
:label="group.label"
>
<el-option
v-for="item in group.options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-option-group>
</el-select>
@ -123,25 +270,54 @@
</div>
</el-dialog>
<!-- 随访 -->
<el-dialog class="popup" title="随访" :visible.sync="open1" width="780px" append-to-body>
<el-form class="formStep" ref="form1" :model="form" :rules="rules" label-width="90px">
<el-dialog
class="popup"
title="随访"
:visible.sync="open1"
width="780px"
append-to-body
>
<el-form
class="formStep"
ref="form1"
:model="form"
:rules="rules"
label-width="90px"
>
<el-form-item label="随访人" prop="followuper">
<el-input :disabled="open1Disabled" v-model="form.followuper" placeholder="请输入" />
<el-input
:disabled="open1Disabled"
v-model="form.followuper"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="随访时间" prop="followupTime">
<el-date-picker :disabled="open1Disabled" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.followupTime" type="datetime" placeholder="选择日期">
<el-date-picker
:disabled="open1Disabled"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.followupTime"
type="datetime"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="随访次数" prop="times">
<el-input v-model="form.times" placeholder="请输入" />
</el-form-item> -->
<el-form-item label="随访内容" prop="followupText">
<el-input :disabled="open1Disabled" type="textarea" v-model="form.followupText" placeholder="请输入" />
<el-input
:disabled="open1Disabled"
type="textarea"
v-model="form.followupText"
placeholder="请输入"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm1" v-if="!open1Disabled"> </el-button>
<el-button type="primary" @click="submitForm1" v-if="!open1Disabled"
> </el-button
>
<el-button @click="open1 = false"> </el-button>
</div>
</el-dialog>
@ -152,15 +328,18 @@
import {
queryTask,
updStatus,
followPatient,followStatus
followPatient,
followStatus,
} from "@/api/followupFile";
export default {
name: "Notice",
data() {
return {
options: [{
options: [
{
label: "患者原因",
options: [{
options: [
{
value: "患者病情加重或死亡,无法参与随访",
},
{
@ -179,7 +358,8 @@
},
{
label: "医疗机构原因",
options: [{
options: [
{
value: "随访管理不足,未及时安排随访",
},
{
@ -195,7 +375,8 @@
},
{
label: "不可抗力",
options: [{
options: [
{
value: "社会动荡或自然灾害",
},
{
@ -227,16 +408,17 @@
{
label: "超期未随访",
value: 2,
}
},
],
1: [
{
label: "超期已随访",
value: 2,
}
]
},
idCardType: [{
],
},
idCardType: [
{
label: "身份证",
value: 0,
},
@ -282,8 +464,8 @@
pageSize: 10,
param: {
status: "0",
childStatus:'',
keywords: '',
childStatus: "",
keywords: "",
},
},
formDisabled: false,
@ -292,43 +474,53 @@
form: {},
//
rules: {
followuper: [{
followuper: [
{
required: true,
message: "随访人不能为空",
trigger: "blur"
}, ],
followupTime: [{
trigger: "blur",
},
],
followupTime: [
{
required: true,
message: "随访时间不能为空",
trigger: "change"
}, ],
followupText: [{
trigger: "change",
},
],
followupText: [
{
required: true,
message: "随访内容不能为空",
trigger: "blur"
}, ],
times: [{
trigger: "blur",
},
],
times: [
{
required: true,
message: "随访次数不能为空",
trigger: "blur"
}, ],
trigger: "blur",
},
],
reason: [{
reason: [
{
required: true,
message: "失访原因不能为空",
trigger: "change"
}, ],
trigger: "change",
},
],
},
};
},
created() {
let idCard = this.$route.query.idCard
this.queryParams.param.keywords = idCard || ''
let idCard = this.$route.query.idCard;
this.queryParams.param.keywords = idCard || "";
this.getList();
},
methods: {
handleClick(tab, event) {
this.queryParams.param.childStatus = ''
this.queryParams.param.childStatus = "";
this.getList();
},
/** 查询公告列表 */
@ -357,8 +549,8 @@
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.param.keywords = ''
this.queryParams.param.childStatus = ''
this.queryParams.param.keywords = "";
this.queryParams.param.childStatus = "";
this.handleQuery();
},
//
@ -375,7 +567,7 @@
/** 随访 */
handleFollow(row) {
this.open1 = true;
this.open1Disabled = false
this.open1Disabled = false;
this.form = {
id: row.id,
followuper: "",
@ -388,20 +580,19 @@
handleLossFollow(row) {
this.open = true;
this.form = JSON.parse(JSON.stringify(row));
this.form.status = 2
this.form.status = 2;
},
handleDetails(row) {
this.open1 = true;
this.open1Disabled = true
this.open1Disabled = true;
this.form = JSON.parse(JSON.stringify(row));
},
// 访
handleBeFollow(row) {
let data = {
id: row.id,
status:0
}
status: 0,
};
this.$modal
.confirm(`是否确认将该患者(${row.name})标记为待随访?`)
.then(function () {
@ -412,7 +603,7 @@
this.$modal.msgSuccess("操作成功");
})
.catch((err) => {
console.log('err',err)
console.log("err", err);
});
},
/** 提交按钮 */
@ -466,7 +657,7 @@
.confirm("是否确认删除当前选择的数据?")
.then(function () {
return patientDel({
idList: idList
idList: idList,
});
})
.then(() => {
@ -478,7 +669,8 @@
/** 导出按钮操作 */
handleExport() {
this.download(
"system/user/export", {
"system/user/export",
{
...this.queryParams.params,
},
`患者档案.xlsx`

3
acupuncture-前台/src/views/medicalFile/index.vue

@ -10,8 +10,9 @@
>
<el-form-item label="" prop="noticeTitle">
<el-input
style="width: 300px"
placeholder="姓名、全拼、简拼、手机号码、证件号码"
v-model="queryParams.param.keywords"
placeholder="支持姓名、全拼、简拼、手机号吗、证件号码"
clearable
@keyup.enter.native="handleQuery"
/>

459
acupuncture-前台/src/views/patientFile/index.vue

@ -1,18 +1,37 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="" prop="noticeTitle">
<el-input v-model="queryParams.param.keywords" placeholder="支持姓名、全拼、简拼、手机号吗、证件号码" clearable
@keyup.enter.native="handleQuery" />
<el-input
style="width: 300px"
v-model="queryParams.param.keywords"
placeholder="支持姓名、全拼、简拼、手机号码、证件号码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="年龄范围" prop="createBy">
<div class="form-item-age">
<el-input v-model="queryParams.param.startAge" placeholder="最小年龄" clearable
@keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.param.startAge"
placeholder="最小年龄"
clearable
@keyup.enter.native="handleQuery"
/>
<span></span>
<el-input v-model="queryParams.param.endAge" placeholder="最大年龄" clearable
@keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.param.endAge"
placeholder="最大年龄"
clearable
@keyup.enter.native="handleQuery"
/>
</div>
</el-form-item>
<!-- <el-form-item label="建档组织" prop="tenantId">
@ -25,14 +44,24 @@
</el-select>
</el-form-item> -->
<el-form-item label="数据来源" prop="sourceId">
<el-select v-model="queryParams.param.sourceId" placeholder="请选择" clearable>
<el-select
v-model="queryParams.param.sourceId"
placeholder="请选择"
clearable
>
<el-option label="筛查" :value="0" />
<el-option label="录入" :value="1" />
<el-option label="HIS" :value="2" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<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>
@ -41,48 +70,152 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete">删除</el-button>
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-bottom" size="mini"
@click="handleDownload">下载模版</el-button>
<el-button
type="info"
plain
icon="el-icon-bottom"
size="mini"
@click="handleDownload"
>下载模版</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
<el-button
type="warning"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
>导入</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="listDat" @selection-change="handleSelectionChange" max-height="600">
<el-table
v-loading="loading"
:data="listDat"
@selection-change="handleSelectionChange"
max-height="600"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="姓名" align="center" prop="name" min-width="100" fixed />
<el-table-column label="性别" align="center" prop="gender" show-overflow-tooltip min-width="100" fixed>
<el-table-column
label="姓名"
align="center"
prop="name"
min-width="100"
fixed
/>
<el-table-column
label="性别"
align="center"
prop="gender"
show-overflow-tooltip
min-width="100"
fixed
>
<template slot-scope="scope">
<span v-if="scope.row.gender == 0"></span>
<span v-if="scope.row.gender == 1"></span>
</template>
</el-table-column>
<el-table-column label="出生日期" align="center" prop="birthDate" show-overflow-tooltip min-width="150" fixed />
<el-table-column label="民族" align="center" prop="ethnicity" show-overflow-tooltip min-width="100" />
<el-table-column label="受教育年限" align="center" prop="educationYears" show-overflow-tooltip min-width="100" />
<el-table-column label="手机号码" align="center" prop="phone" show-overflow-tooltip min-width="150" />
<el-table-column label="证件类型" align="center" prop="idCardType" show-overflow-tooltip min-width="200">
<el-table-column
label="出生日期"
align="center"
prop="birthDate"
show-overflow-tooltip
min-width="150"
fixed
/>
<el-table-column
label="民族"
align="center"
prop="ethnicity"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="受教育年限"
align="center"
prop="educationYears"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="手机号码"
align="center"
prop="phone"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
label="证件类型"
align="center"
prop="idCardType"
show-overflow-tooltip
min-width="200"
>
<template slot-scope="scope">
{{ idCardTypeValue[scope.row.idCardType] }}
</template>
</el-table-column>
<el-table-column label="证件号码" align="center" prop="idCard" show-overflow-tooltip min-width="180" />
<el-table-column
label="证件号码"
align="center"
prop="idCard"
show-overflow-tooltip
min-width="180"
/>
<el-table-column label="建档人" align="center" prop="createBy" show-overflow-tooltip min-width="100" />
<el-table-column label="建档组织(医院名称)" align="center" prop="tenantName" show-overflow-tooltip min-width="150" />
<el-table-column
label="建档人"
align="center"
prop="createBy"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="建档组织(医院名称)"
align="center"
prop="tenantName"
show-overflow-tooltip
min-width="150"
/>
<el-table-column label="建档日期" align="center" min-width="140">
<template slot-scope="scope">
<span>{{
@ -90,7 +223,14 @@
}}</span>
</template>
</el-table-column>
<el-table-column fixed="right" label="来源" align="center" prop="source" show-overflow-tooltip min-width="100">
<el-table-column
fixed="right"
label="来源"
align="center"
prop="source"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
<span v-if="scope.row.source == 0">筛查</span>
<span v-if="scope.row.source == 1">录入</span>
@ -99,26 +239,67 @@
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="150">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit"
@click="handleUpdate(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete"
@click="handleDelete(scope.row)">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-tickets"
@click="handleDetails(scope.row)">详情</el-button>
<el-button size="mini" type="text" icon="el-icon-notebook-1"
@click="handleArchives(scope.row)">诊疗档案</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-tickets"
@click="handleDetails(scope.row)"
>详情</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-notebook-1"
@click="handleArchives(scope.row)"
>诊疗档案</el-button
>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改公告对话框 -->
<el-dialog class="popup" :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form class="formStep" ref="form" :model="form" :rules="rules" label-width="100px">
<el-dialog
class="popup"
:title="title"
:visible.sync="open"
width="780px"
append-to-body
>
<el-form
class="formStep"
ref="form"
:model="form"
:rules="rules"
label-width="100px"
>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" :disabled="formDisabled" placeholder="请输入" />
<el-input
v-model="form.name"
:disabled="formDisabled"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="form.gender" :disabled="formDisabled">
@ -127,34 +308,72 @@
</el-radio-group>
</el-form-item>
<el-form-item label="出生日期" prop="birthDate">
<el-date-picker :disabled="formDisabled" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
v-model="form.birthDate" type="date" placeholder="选择日期">
<el-date-picker
:disabled="formDisabled"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
v-model="form.birthDate"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="民族" prop="ethnicity">
<el-input v-model="form.ethnicity" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.ethnicity"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="受教育年限" prop="educationYears">
<el-input v-model="form.educationYears" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.educationYears"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phone">
<el-input v-model="form.phone" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.phone"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="证件类型" prop="idCardType">
<el-select v-model="form.idCardType" placeholder="请选择" :disabled="formDisabled">
<el-option v-for="item in idCardType" :key="item.value" :label="item.label" :value="item.value">
<el-select
v-model="form.idCardType"
placeholder="请选择"
:disabled="formDisabled"
>
<el-option
v-for="item in idCardType"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="证件号码" prop="idCard">
<el-input v-model="form.idCard" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.idCard"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="现病史" prop="">
<el-checkbox-group v-model="form.currentIllnessHistory" :disabled="formDisabled">
<el-checkbox-group
v-model="form.currentIllnessHistory"
:disabled="formDisabled"
>
<el-checkbox v-for="(item, index) in medicalHistory" :label="item">
</el-checkbox>
</el-checkbox-group>
<el-input v-model="form.currentIllnessHistoryQt" placeholder="其他" :disabled="formDisabled" />
<el-input
v-model="form.currentIllnessHistoryQt"
placeholder="其他"
:disabled="formDisabled"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -163,12 +382,25 @@
</div>
</el-dialog>
<!-- 导入患者信息 -->
<el-dialog title="导入患者档案" :visible.sync="importOpen" width="640px" append-to-body>
<el-dialog
title="导入患者档案"
:visible.sync="importOpen"
width="640px"
append-to-body
>
<el-form ref="importform" :model="importform">
<el-form-item prop="accessUrl">
<el-upload :limit="1" class="avatar-uploader wj-uploader" :headers="headers"
:action="uploadFileUrl1" accept=".xlsx, .xls" :before-upload="handleBeforePdfUpload1"
:on-success="handleUploadPdfAdd1" :file-list="fileList" :show-file-list="true">
<el-upload
:limit="1"
class="avatar-uploader wj-uploader"
:headers="headers"
:action="uploadFileUrl1"
accept=".xlsx, .xls"
:before-upload="handleBeforePdfUpload1"
:on-success="handleUploadPdfAdd1"
:file-list="fileList"
:show-file-list="true"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
@ -182,9 +414,7 @@
</template>
<script>
import {
getToken
} from "@/utils/auth";
import { getToken } from "@/utils/auth";
import {
queryPatient,
patientAdd,
@ -200,7 +430,8 @@
Authorization: "Bearer " + getToken(),
deptId: localStorage.getItem("hospitalId"),
},
uploadFileUrl1: process.env.VUE_APP_API_QZURL + "/acupuncture/patient/import", //
uploadFileUrl1:
process.env.VUE_APP_API_QZURL + "/acupuncture/patient/import", //
fileList: [],
//
medicalHistory: [
@ -223,7 +454,8 @@
"肾炎、肾病",
"高脂血症",
],
idCardType: [{
idCardType: [
{
label: "身份证",
value: 0,
},
@ -280,58 +512,80 @@
form: {},
//
rules: {
name: [{
name: [
{
required: true,
message: "患者姓名不能为空",
trigger: "blur"
}, ],
gender: [{
trigger: "blur",
},
],
gender: [
{
required: true,
message: "性别不能为空",
trigger: "change"
}, ],
birthDate: [{
trigger: "change",
},
],
birthDate: [
{
required: true,
message: "出生日期不能为空",
trigger: "change"
}, ],
phone: [{
trigger: "change",
},
],
phone: [
{
required: true,
message: "手机号码不能为空",
trigger: "blur"
},{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
trigger: "blur",
},
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号码格式不正确",
trigger: "blur",
},
],
ethnicity: [{
ethnicity: [
{
required: true,
message: "民族不能为空",
trigger: "blur"
}, ],
idCardType: [{
trigger: "blur",
},
],
idCardType: [
{
required: true,
message: "证件类型不能为空",
trigger: "blur"
}, ],
idCard: [{
trigger: "blur",
},
],
idCard: [
{
required: true,
message: "证件号码不能为空",
trigger: "blur"
}, ],
educationYears: [{
trigger: "blur",
},
],
educationYears: [
{
required: true,
message: "受教育年限不能为空",
trigger: "blur"
}, ],
currentIllnessHistory: [{
trigger: "blur",
},
],
currentIllnessHistory: [
{
required: true,
message: "现病史不能为空",
trigger: "blur",
}, ],
},
],
},
};
},
created() {
let idCard = this.$route.query.idCard
this.queryParams.param.keywords = idCard || ''
let idCard = this.$route.query.idCard;
this.queryParams.param.keywords = idCard || "";
this.getList();
},
methods: {
@ -389,7 +643,7 @@
phone: "", //
idCardType: "", //
idCard: "", //
"source": 1,
source: 1,
currentIllnessHistory: [], //
currentIllnessHistoryQt: "", //
};
@ -409,7 +663,7 @@
tenantId: "", //
createBy: "", //
sourceId: "", //
}
};
this.handleQuery();
},
//
@ -433,7 +687,7 @@
this.form = JSON.parse(JSON.stringify(row));
//
this.form.currentIllnessHistory =
this.form.currentIllnessHistory?.split(",") || []
this.form.currentIllnessHistory?.split(",") || [];
},
/** 详情按钮操作 */
handleDetails(row) {
@ -443,20 +697,18 @@
this.form = JSON.parse(JSON.stringify(row));
//
this.form.currentIllnessHistory =
this.form.currentIllnessHistory?.split(",") || []
this.form.currentIllnessHistory?.split(",") || [];
},
/** 诊疗档案 */
handleArchives(row) {
this.$router.push({
path:`/medicalIndex?idCard=${row.idCard}`
})
path: `/medicalIndex?idCard=${row.idCard}`,
});
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != undefined) {
patientUpd(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
@ -481,7 +733,7 @@
.confirm("是否确认删除当前选择的数据?")
.then(function () {
return patientDel({
idList: idList
idList: idList,
});
})
.then(() => {
@ -493,7 +745,8 @@
/** 导出按钮操作 */
handleExport() {
this.download1(
"/patient/export", {
"/patient/export",
{
...this.queryParams.params,
},
`患者档案.xlsx`
@ -501,7 +754,9 @@
},
/** 下载按钮操作 */
handleDownload() {
window.open(`${process.env.VUE_APP_API_QZURL}/acupuncture/profile/PatientTemplate.xlsx`)
window.open(
`${process.env.VUE_APP_API_QZURL}/acupuncture/profile/PatientTemplate.xlsx`
);
// this.download1(
// "/patient/export", {},
// `.xlsx`
@ -509,7 +764,7 @@
},
/** 导入按钮操作 */
handleImport() {
this.fileList = []
this.fileList = [];
this.importOpen = true;
},
},

343
acupuncture-后台/src/views/followFile/work.vue

@ -1,76 +1,180 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="" prop="keywords">
<el-input v-model="queryParams.param.keywords" placeholder="支持姓名、全拼、简拼、手机号吗、证件号码" clearable
@keyup.enter.native="handleQuery" />
<el-input
style="width: 300px"
placeholder="姓名、全拼、简拼、手机号码、证件号码"
v-model="queryParams.param.keywords"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="childStatus">
<el-select v-model="queryParams.param.childStatus" clearable placeholder="请选择">
<el-select
v-model="queryParams.param.childStatus"
clearable
placeholder="请选择"
>
<el-option
v-for="item in childStatusList[queryParams.param.status]"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</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
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>
</el-form>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-tabs v-model="queryParams.param.status" @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-tabs>
<el-table v-loading="loading" :data="listDat" @selection-change="handleSelectionChange">
<el-table
v-loading="loading"
:data="listDat"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="工单id" fixed show-overflow-tooltip align="center" prop="id" min-width="200" />
<el-table-column fixed label="随访队列" show-overflow-tooltip align="center" prop="queueName" min-width="150" />
<el-table-column fixed label="患者姓名" align="center" prop="name" min-width="100" />
<el-table-column label="性别" align="center" prop="gender" show-overflow-tooltip min-width="60">
<el-table-column
label="工单id"
fixed
show-overflow-tooltip
align="center"
prop="id"
min-width="200"
/>
<el-table-column
fixed
label="随访队列"
show-overflow-tooltip
align="center"
prop="queueName"
min-width="150"
/>
<el-table-column
fixed
label="患者姓名"
align="center"
prop="name"
min-width="100"
/>
<el-table-column
label="性别"
align="center"
prop="gender"
show-overflow-tooltip
min-width="60"
>
<template slot-scope="scope">
<span v-if="scope.row.gender == 0"></span>
<span v-if="scope.row.gender == 1"></span>
</template>
</el-table-column>
<el-table-column label="年龄" align="center" prop="age" show-overflow-tooltip min-width="60" />
<el-table-column label="证件号码" align="center" prop="idCard" show-overflow-tooltip min-width="180" />
<el-table-column label="手机号码" align="center" prop="phone" show-overflow-tooltip min-width="150" />
<el-table-column label="随访次数" align="center" prop="times" show-overflow-tooltip min-width="150" />
<el-table-column label="开始时间" align="center" prop="startTime" show-overflow-tooltip min-width="150">
<el-table-column
label="年龄"
align="center"
prop="age"
show-overflow-tooltip
min-width="60"
/>
<el-table-column
label="证件号码"
align="center"
prop="idCard"
show-overflow-tooltip
min-width="180"
/>
<el-table-column
label="手机号码"
align="center"
prop="phone"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
label="随访次数"
align="center"
prop="times"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
label="开始时间"
align="center"
prop="startTime"
show-overflow-tooltip
min-width="150"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.startTime, "{y}-{m}-{d} {h}:{i}")
}}</span>
</template>
</el-table-column>
<el-table-column label="结束时间" align="center" prop="endTime" show-overflow-tooltip min-width="150">
<el-table-column
label="结束时间"
align="center"
prop="endTime"
show-overflow-tooltip
min-width="150"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}")
}}</span>
<span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<!--待随访 随访状态待随访/即将超期/超期 -->
<!--已随访 随访状态已随访/超随访期 -->
<!--待随访 随访状态待随访 -->
<el-table-column label="随访状态" align="center" prop="phone" show-overflow-tooltip min-width="100" fixed="right">
<el-table-column
label="随访状态"
align="center"
prop="phone"
show-overflow-tooltip
min-width="100"
fixed="right"
>
<template slot-scope="scope">
<span :class="classStatus[scope.row.status] ">{{ status[scope.row.status] }}</span>
<span :class="classStatus[scope.row.status]">{{
status[scope.row.status]
}}</span>
</template>
</el-table-column>
<el-table-column v-if="queryParams.param.status == 2" label="失访原因" align="center" prop="reason"
show-overflow-tooltip width="200" />
<el-table-column
v-if="queryParams.param.status == 2"
label="失访原因"
align="center"
prop="reason"
show-overflow-tooltip
width="200"
/>
<el-table-column fixed="right" label="操作" align="center" width="100">
<template slot-scope="scope">
<!-- 待随访 -->
@ -85,8 +189,13 @@
</el-button>
</div> -->
<!-- 随访 -->
<el-button v-if="queryParams.param.status == 1" size="mini" type="text" icon="el-icon-s-check"
@click="handleDetails(scope.row)">
<el-button
v-if="queryParams.param.status == 1"
size="mini"
type="text"
icon="el-icon-s-check"
@click="handleDetails(scope.row)"
>
查看详情
</el-button>
<!-- 失访 -->
@ -98,17 +207,42 @@
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 失访 -->
<el-dialog class="popup" title="标记失访" :visible.sync="open" width="780px" append-to-body>
<el-form class="formStep" ref="form" :model="form" :rules="rules" label-width="90px">
<el-dialog
class="popup"
title="标记失访"
:visible.sync="open"
width="780px"
append-to-body
>
<el-form
class="formStep"
ref="form"
:model="form"
:rules="rules"
label-width="90px"
>
<el-form-item label="失访原因" prop="reason">
<el-select v-model="form.reason" placeholder="请选择">
<el-option-group v-for="group in options" :key="group.label" :label="group.label">
<el-option v-for="item in group.options" :key="item.value" :label="item.label"
:value="item.value">
<el-option-group
v-for="group in options"
:key="group.label"
:label="group.label"
>
<el-option
v-for="item in group.options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-option-group>
</el-select>
@ -120,22 +254,51 @@
</div>
</el-dialog>
<!-- 随访 -->
<el-dialog class="popup" title="随访" :visible.sync="open1" width="780px" append-to-body>
<el-form class="formStep" ref="form1" :model="form" :rules="rules" label-width="90px">
<el-dialog
class="popup"
title="随访"
:visible.sync="open1"
width="780px"
append-to-body
>
<el-form
class="formStep"
ref="form1"
:model="form"
:rules="rules"
label-width="90px"
>
<el-form-item label="随访人" prop="followuper">
<el-input :disabled="open1Disabled" v-model="form.followuper" placeholder="请输入" />
<el-input
:disabled="open1Disabled"
v-model="form.followuper"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="随访时间" prop="followupTime">
<el-date-picker :disabled="open1Disabled" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.followupTime" type="datetime" placeholder="选择日期">
<el-date-picker
:disabled="open1Disabled"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.followupTime"
type="datetime"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="随访内容" prop="followupText">
<el-input :disabled="open1Disabled" type="textarea" v-model="form.followupText" placeholder="请输入" />
<el-input
:disabled="open1Disabled"
type="textarea"
v-model="form.followupText"
placeholder="请输入"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm1" v-if="!open1Disabled"> </el-button>
<el-button type="primary" @click="submitForm1" v-if="!open1Disabled"
> </el-button
>
<el-button @click="open1 = false"> </el-button>
</div>
</el-dialog>
@ -146,15 +309,18 @@
import {
queryTask,
updStatus,
followPatient,followStatus
followPatient,
followStatus,
} from "@/api/followupFile";
export default {
name: "Notice",
data() {
return {
options: [{
options: [
{
label: "患者原因",
options: [{
options: [
{
value: "患者病情加重或死亡,无法参与随访",
},
{
@ -173,7 +339,8 @@
},
{
label: "医疗机构原因",
options: [{
options: [
{
value: "随访管理不足,未及时安排随访",
},
{
@ -189,7 +356,8 @@
},
{
label: "不可抗力",
options: [{
options: [
{
value: "社会动荡或自然灾害",
},
{
@ -221,16 +389,17 @@
{
label: "超期未随访",
value: 2,
}
},
],
1: [
{
label: "超期已随访",
value: 2,
}
]
},
idCardType: [{
],
},
idCardType: [
{
label: "身份证",
value: 0,
},
@ -276,8 +445,8 @@
pageSize: 10,
param: {
status: "0",
childStatus:'',
keywords: '',
childStatus: "",
keywords: "",
},
},
formDisabled: false,
@ -286,43 +455,53 @@
form: {},
//
rules: {
followuper: [{
followuper: [
{
required: true,
message: "随访人不能为空",
trigger: "blur"
}, ],
followupTime: [{
trigger: "blur",
},
],
followupTime: [
{
required: true,
message: "随访时间不能为空",
trigger: "change"
}, ],
followupText: [{
trigger: "change",
},
],
followupText: [
{
required: true,
message: "随访内容不能为空",
trigger: "blur"
}, ],
times: [{
trigger: "blur",
},
],
times: [
{
required: true,
message: "随访次数不能为空",
trigger: "blur"
}, ],
trigger: "blur",
},
],
reason: [{
reason: [
{
required: true,
message: "失访原因不能为空",
trigger: "change"
}, ],
trigger: "change",
},
],
},
};
},
created() {
let idCard = this.$route.query.idCard
this.queryParams.param.keywords = idCard || ''
let idCard = this.$route.query.idCard;
this.queryParams.param.keywords = idCard || "";
this.getList();
},
methods: {
handleClick(tab, event) {
this.queryParams.param.childStatus = ''
this.queryParams.param.childStatus = "";
this.getList();
},
/** 查询公告列表 */
@ -351,8 +530,8 @@
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.param.keywords = ''
this.queryParams.param.childStatus = ''
this.queryParams.param.keywords = "";
this.queryParams.param.childStatus = "";
this.handleQuery();
},
//
@ -369,7 +548,7 @@
/** 随访 */
handleFollow(row) {
this.open1 = true;
this.open1Disabled = false
this.open1Disabled = false;
this.form = {
id: row.id,
followuper: "",
@ -382,20 +561,19 @@
handleLossFollow(row) {
this.open = true;
this.form = JSON.parse(JSON.stringify(row));
this.form.status = 2
this.form.status = 2;
},
handleDetails(row) {
this.open1 = true;
this.open1Disabled = true
this.open1Disabled = true;
this.form = JSON.parse(JSON.stringify(row));
},
// 访
handleBeFollow(row) {
let data = {
id: row.id,
status:0
}
status: 0,
};
this.$modal
.confirm(`是否确认将该患者(${row.name})标记为待随访?`)
.then(function () {
@ -406,7 +584,7 @@
this.$modal.msgSuccess("操作成功");
})
.catch((err) => {
console.log('err',err)
console.log("err", err);
});
},
/** 提交按钮 */
@ -460,7 +638,7 @@
.confirm("是否确认删除当前选择的数据?")
.then(function () {
return patientDel({
idList: idList
idList: idList,
});
})
.then(() => {
@ -472,7 +650,8 @@
/** 导出按钮操作 */
handleExport() {
this.download(
"system/user/export", {
"system/user/export",
{
...this.queryParams.params,
},
`患者档案.xlsx`

3
acupuncture-后台/src/views/medicalFile/index.vue

@ -10,8 +10,9 @@
>
<el-form-item label="" prop="noticeTitle">
<el-input
style="width: 300px"
placeholder="姓名、全拼、简拼、手机号码、证件号码"
v-model="queryParams.param.keywords"
placeholder="支持姓名、全拼、简拼、手机号吗、证件号码"
clearable
@keyup.enter.native="handleQuery"
/>

402
acupuncture-后台/src/views/patientFile/index.vue

@ -1,18 +1,37 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="" prop="noticeTitle">
<el-input v-model="queryParams.param.keywords" placeholder="支持姓名、全拼、简拼、手机号吗、证件号码" clearable
@keyup.enter.native="handleQuery" />
<el-input
style="width: 300px"
placeholder="姓名、全拼、简拼、手机号码、证件号码"
v-model="queryParams.param.keywords"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="年龄范围" prop="createBy">
<div class="form-item-age">
<el-input v-model="queryParams.param.startAge" placeholder="最小年龄" clearable
@keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.param.startAge"
placeholder="最小年龄"
clearable
@keyup.enter.native="handleQuery"
/>
<span></span>
<el-input v-model="queryParams.param.endAge" placeholder="最大年龄" clearable
@keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.param.endAge"
placeholder="最大年龄"
clearable
@keyup.enter.native="handleQuery"
/>
</div>
</el-form-item>
<!-- <el-form-item label="建档组织" prop="tenantId">
@ -25,14 +44,24 @@
</el-select>
</el-form-item> -->
<el-form-item label="数据来源" prop="sourceId">
<el-select v-model="queryParams.param.sourceId" placeholder="请选择" clearable>
<el-select
v-model="queryParams.param.sourceId"
placeholder="请选择"
clearable
>
<el-option label="筛查" :value="0" />
<el-option label="录入" :value="1" />
<el-option label="HIS" :value="2" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<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>
@ -55,34 +84,111 @@
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="listDat" @selection-change="handleSelectionChange" max-height="600">
<el-table
v-loading="loading"
:data="listDat"
@selection-change="handleSelectionChange"
max-height="600"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="姓名" align="center" prop="name" min-width="100" fixed />
<el-table-column label="性别" align="center" prop="gender" show-overflow-tooltip min-width="100" fixed>
<el-table-column
label="姓名"
align="center"
prop="name"
min-width="100"
fixed
/>
<el-table-column
label="性别"
align="center"
prop="gender"
show-overflow-tooltip
min-width="100"
fixed
>
<template slot-scope="scope">
<span v-if="scope.row.gender == 0"></span>
<span v-if="scope.row.gender == 1"></span>
</template>
</el-table-column>
<el-table-column label="出生日期" align="center" prop="birthDate" show-overflow-tooltip min-width="150" fixed />
<el-table-column label="民族" align="center" prop="ethnicity" show-overflow-tooltip min-width="100" />
<el-table-column label="受教育年限" align="center" prop="educationYears" show-overflow-tooltip min-width="100" />
<el-table-column label="手机号码" align="center" prop="phone" show-overflow-tooltip min-width="150" />
<el-table-column label="证件类型" align="center" prop="idCardType" show-overflow-tooltip min-width="200">
<el-table-column
label="出生日期"
align="center"
prop="birthDate"
show-overflow-tooltip
min-width="150"
fixed
/>
<el-table-column
label="民族"
align="center"
prop="ethnicity"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="受教育年限"
align="center"
prop="educationYears"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="手机号码"
align="center"
prop="phone"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
label="证件类型"
align="center"
prop="idCardType"
show-overflow-tooltip
min-width="200"
>
<template slot-scope="scope">
{{ idCardTypeValue[scope.row.idCardType] }}
</template>
</el-table-column>
<el-table-column label="证件号码" align="center" prop="idCard" show-overflow-tooltip min-width="180" />
<el-table-column
label="证件号码"
align="center"
prop="idCard"
show-overflow-tooltip
min-width="180"
/>
<el-table-column label="建档人" align="center" prop="createBy" show-overflow-tooltip min-width="100" />
<el-table-column label="建档组织(医院名称)" align="center" prop="tenantName" show-overflow-tooltip min-width="150" />
<el-table-column
label="建档人"
align="center"
prop="createBy"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
label="建档组织(医院名称)"
align="center"
prop="tenantName"
show-overflow-tooltip
min-width="150"
/>
<el-table-column label="建档日期" align="center" min-width="140">
<template slot-scope="scope">
<span>{{
@ -90,7 +196,14 @@
}}</span>
</template>
</el-table-column>
<el-table-column fixed="right" label="来源" align="center" prop="source" show-overflow-tooltip min-width="100">
<el-table-column
fixed="right"
label="来源"
align="center"
prop="source"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
<span v-if="scope.row.source == 0">筛查</span>
<span v-if="scope.row.source == 1">录入</span>
@ -103,22 +216,53 @@
@click="handleUpdate(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete"
@click="handleDelete(scope.row)">删除</el-button> -->
<el-button size="mini" type="text" icon="el-icon-tickets"
@click="handleDetails(scope.row)">详情</el-button>
<el-button size="mini" type="text" icon="el-icon-notebook-1"
@click="handleArchives(scope.row)">诊疗档案</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-tickets"
@click="handleDetails(scope.row)"
>详情</el-table-column
>
<el-button
size="mini"
type="text"
icon="el-icon-notebook-1"
@click="handleArchives(scope.row)"
>诊疗档案</el-button
>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改公告对话框 -->
<el-dialog class="popup" :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form class="formStep" ref="form" :model="form" :rules="rules" label-width="100px">
<el-dialog
class="popup"
:title="title"
:visible.sync="open"
width="780px"
append-to-body
>
<el-form
class="formStep"
ref="form"
:model="form"
:rules="rules"
label-width="100px"
>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" :disabled="formDisabled" placeholder="请输入" />
<el-input
v-model="form.name"
:disabled="formDisabled"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="form.gender" :disabled="formDisabled">
@ -127,34 +271,72 @@
</el-radio-group>
</el-form-item>
<el-form-item label="出生日期" prop="birthDate">
<el-date-picker :disabled="formDisabled" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
v-model="form.birthDate" type="date" placeholder="选择日期">
<el-date-picker
:disabled="formDisabled"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
v-model="form.birthDate"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="民族" prop="ethnicity">
<el-input v-model="form.ethnicity" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.ethnicity"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="受教育年限" prop="educationYears">
<el-input v-model="form.educationYears" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.educationYears"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phone">
<el-input v-model="form.phone" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.phone"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="证件类型" prop="idCardType">
<el-select v-model="form.idCardType" placeholder="请选择" :disabled="formDisabled">
<el-option v-for="item in idCardType" :key="item.value" :label="item.label" :value="item.value">
<el-select
v-model="form.idCardType"
placeholder="请选择"
:disabled="formDisabled"
>
<el-option
v-for="item in idCardType"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="证件号码" prop="idCard">
<el-input v-model="form.idCard" placeholder="请输入" :disabled="formDisabled" />
<el-input
v-model="form.idCard"
placeholder="请输入"
:disabled="formDisabled"
/>
</el-form-item>
<el-form-item label="现病史" prop="">
<el-checkbox-group v-model="form.currentIllnessHistory" :disabled="formDisabled">
<el-checkbox-group
v-model="form.currentIllnessHistory"
:disabled="formDisabled"
>
<el-checkbox v-for="(item, index) in medicalHistory" :label="item">
</el-checkbox>
</el-checkbox-group>
<el-input v-model="form.currentIllnessHistoryQt" placeholder="其他" :disabled="formDisabled" />
<el-input
v-model="form.currentIllnessHistoryQt"
placeholder="其他"
:disabled="formDisabled"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -163,12 +345,25 @@
</div>
</el-dialog>
<!-- 导入患者信息 -->
<el-dialog title="导入患者档案" :visible.sync="importOpen" width="640px" append-to-body>
<el-dialog
title="导入患者档案"
:visible.sync="importOpen"
width="640px"
append-to-body
>
<el-form ref="importform" :model="importform">
<el-form-item prop="accessUrl">
<el-upload :limit="1" class="avatar-uploader wj-uploader" :headers="headers"
:action="uploadFileUrl1" accept=".xlsx, .xls" :before-upload="handleBeforePdfUpload1"
:on-success="handleUploadPdfAdd1" :file-list="fileList" :show-file-list="true">
<el-upload
:limit="1"
class="avatar-uploader wj-uploader"
:headers="headers"
:action="uploadFileUrl1"
accept=".xlsx, .xls"
:before-upload="handleBeforePdfUpload1"
:on-success="handleUploadPdfAdd1"
:file-list="fileList"
:show-file-list="true"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
@ -182,9 +377,7 @@
</template>
<script>
import {
getToken
} from "@/utils/auth";
import { getToken } from "@/utils/auth";
import {
queryPatient,
patientAdd,
@ -200,7 +393,8 @@
Authorization: "Bearer " + getToken(),
deptId: localStorage.getItem("hospitalId"),
},
uploadFileUrl1: process.env.VUE_APP_API_QZURL + "/acupuncture/patient/import", //
uploadFileUrl1:
process.env.VUE_APP_API_QZURL + "/acupuncture/patient/import", //
fileList: [],
//
medicalHistory: [
@ -223,7 +417,8 @@
"肾炎、肾病",
"高脂血症",
],
idCardType: [{
idCardType: [
{
label: "身份证",
value: 0,
},
@ -280,58 +475,80 @@
form: {},
//
rules: {
name: [{
name: [
{
required: true,
message: "患者姓名不能为空",
trigger: "blur"
}, ],
gender: [{
trigger: "blur",
},
],
gender: [
{
required: true,
message: "性别不能为空",
trigger: "change"
}, ],
birthDate: [{
trigger: "change",
},
],
birthDate: [
{
required: true,
message: "出生日期不能为空",
trigger: "change"
}, ],
phone: [{
trigger: "change",
},
],
phone: [
{
required: true,
message: "手机号码不能为空",
trigger: "blur"
},{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
trigger: "blur",
},
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号码格式不正确",
trigger: "blur",
},
],
ethnicity: [{
ethnicity: [
{
required: true,
message: "民族不能为空",
trigger: "blur"
}, ],
idCardType: [{
trigger: "blur",
},
],
idCardType: [
{
required: true,
message: "证件类型不能为空",
trigger: "blur"
}, ],
idCard: [{
trigger: "blur",
},
],
idCard: [
{
required: true,
message: "证件号码不能为空",
trigger: "blur"
}, ],
educationYears: [{
trigger: "blur",
},
],
educationYears: [
{
required: true,
message: "受教育年限不能为空",
trigger: "blur"
}, ],
currentIllnessHistory: [{
trigger: "blur",
},
],
currentIllnessHistory: [
{
required: true,
message: "现病史不能为空",
trigger: "blur",
}, ],
},
],
},
};
},
created() {
let idCard = this.$route.query.idCard
this.queryParams.param.keywords = idCard || ''
let idCard = this.$route.query.idCard;
this.queryParams.param.keywords = idCard || "";
this.getList();
},
methods: {
@ -389,7 +606,7 @@
phone: "", //
idCardType: "", //
idCard: "", //
"source": 1,
source: 1,
currentIllnessHistory: [], //
currentIllnessHistoryQt: "", //
};
@ -409,7 +626,7 @@
tenantId: "", //
createBy: "", //
sourceId: "", //
}
};
this.handleQuery();
},
//
@ -433,7 +650,7 @@
this.form = JSON.parse(JSON.stringify(row));
//
this.form.currentIllnessHistory =
this.form.currentIllnessHistory?.split(",") || []
this.form.currentIllnessHistory?.split(",") || [];
},
/** 详情按钮操作 */
handleDetails(row) {
@ -443,20 +660,18 @@
this.form = JSON.parse(JSON.stringify(row));
//
this.form.currentIllnessHistory =
this.form.currentIllnessHistory?.split(",") || []
this.form.currentIllnessHistory?.split(",") || [];
},
/** 诊疗档案 */
handleArchives(row) {
this.$router.push({
path:`/medicalFile/index?idCard=${row.idCard}`
})
path: `/medicalFile/index?idCard=${row.idCard}`,
});
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != undefined) {
patientUpd(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
@ -481,7 +696,7 @@
.confirm("是否确认删除当前选择的数据?")
.then(function () {
return patientDel({
idList: idList
idList: idList,
});
})
.then(() => {
@ -493,7 +708,8 @@
/** 导出按钮操作 */
handleExport() {
this.download1(
"/patient/export", {
"/patient/export",
{
...this.queryParams.params,
},
`患者档案.xlsx`
@ -501,7 +717,9 @@
},
/** 下载按钮操作 */
handleDownload() {
window.open(`${process.env.VUE_APP_API_QZURL}/acupuncture/profile/PatientTemplate.xlsx`)
window.open(
`${process.env.VUE_APP_API_QZURL}/acupuncture/profile/PatientTemplate.xlsx`
);
// this.download1(
// "/patient/export", {},
// `.xlsx`
@ -509,7 +727,7 @@
},
/** 导入按钮操作 */
handleImport() {
this.fileList = []
this.fileList = [];
this.importOpen = true;
},
},

Loading…
Cancel
Save