Browse Source

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

new
1747191978@qq.com 9 months ago
parent
commit
3dcfa71597
  1. 416
      acupuncture-前台/src/views/followFile/work.vue
  2. 3
      acupuncture-前台/src/views/medicalFile/index.vue
  3. 483
      acupuncture-前台/src/views/patientFile/index.vue
  4. 391
      acupuncture-后台/src/views/followFile/work.vue
  5. 3
      acupuncture-后台/src/views/medicalFile/index.vue
  6. 426
      acupuncture-后台/src/views/patientFile/index.vue

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save