This commit is contained in:
闫晓茹 2024-08-08 09:17:05 +08:00
parent 48ef195d38
commit a9dfced869
4 changed files with 1066 additions and 614 deletions

View File

@ -1,40 +1,86 @@
<template>
<div class="pagination">
<button style="background-color: #ffff"> {{ total }} </button>
<el-select v-model="currentpageSize" placeholder="请选择" style="width: 100px;margin-right:16px" size="mini"
@change="changesize">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<button @click="updateCPage(currentPage - 1)" :disabled="currentPage <= 1">上一页</button>
<button v-if="startEnd.start > 1" @click="updateCPage(1)">1</button>
<button v-if="startEnd.start > 2" icon="el-icon-more" @click="updateCPage(currentPage - 5)"
:class="[quickprevIconClass, { buttonactive: quickprevIconClass == 'el-icon-d-arrow-left' }]"
@mouseenter="onMouseenter('left')" @mouseleave="quickprevIconClass = 'el-icon-more'">
</button>
<template v-for="(item, index) in totalPage">
<button :class="{ active: Number(currentPage) === item }" :key="index"
v-if="item >= startEnd.start && item <= startEnd.end" @click="updateCPage(item)">{{ item }}</button>
</template>
<button v-if="startEnd.end < totalPage - 1" icon="el-icon-more"
:class="[quicknextIconClass, { buttonactive: quicknextIconClass == 'el-icon-d-arrow-right' }]"
@click="updateCPage(currentPage + 5)" @mouseenter="onMouseenter('right')"
@mouseleave="quicknextIconClass = 'el-icon-more'">
</button>
<button v-if="startEnd.end < totalPage" @click="updateCPage(totalPage)">{{ totalPage }}</button>
<button @click="updateCPage(currentPage + 1)" :disabled="currentPage >= totalPage">下一页</button>
<span style="margin-left:16px">
前往
<el-input v-model="page" min="1" :max="totalPage" style="width: 50px;margin:0 6px;" size="mini"
@focus="foucus" @keyup.enter.native="blur" @blur="blur"></el-input>
</span>
</div>
<div class="pagination">
<button style="background-color: #ffff"> {{ total }} </button>
<el-select
v-model="currentpageSize"
placeholder="请选择"
style="width: 100px; margin-right: 16px"
size="mini"
@change="changesize"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<button @click="updateCPage(currentPage - 1)" :disabled="currentPage <= 1" >
上一页
</button>
<button v-if="startEnd.start > 1" @click="updateCPage(1)">1</button>
<button
v-if="startEnd.start > 2"
icon="el-icon-more"
@click="updateCPage(currentPage - 5)"
:class="[
quickprevIconClass,
{ buttonactive: quickprevIconClass == 'el-icon-d-arrow-left' },
]"
@mouseenter="onMouseenter('left')"
@mouseleave="quickprevIconClass = 'el-icon-more'"
></button>
<template v-for="(item, index) in totalPage">
<button
:class="{ active: Number(currentPage) === item }"
:key="index"
v-if="item >= startEnd.start && item <= startEnd.end"
@click="updateCPage(item)"
>
{{ item }}
</button>
</template>
<button
v-if="startEnd.end < totalPage - 1"
icon="el-icon-more"
:class="[
quicknextIconClass,
{ buttonactive: quicknextIconClass == 'el-icon-d-arrow-right' },
]"
@click="updateCPage(currentPage + 5)"
@mouseenter="onMouseenter('right')"
@mouseleave="quicknextIconClass = 'el-icon-more'"
></button>
<button v-if="startEnd.end < totalPage" @click="updateCPage(totalPage)">
{{ totalPage }}
</button>
<button
@click="updateCPage(currentPage + 1)"
:disabled="currentPage >= totalPage"
>
下一页
</button>
<span style="margin-left: 16px">
前往
<el-input
v-model="page"
min="1"
:max="totalPage"
style="width: 50px; margin: 0 6px"
size="mini"
@focus="foucus"
@keyup.enter.native="blur"
@blur="blur"
></el-input>
</span>
</div>
</template>
<script>
export default {
/*
/*
1. total,总条数 (外部使用Pagination组件的区域传递进来的数据)
2. pageSize,每页显示多少条(外部使用Pagination组件的区域传递进来的数据)
3. totalPage, 根据1,2派生出总页数
@ -43,194 +89,213 @@ export default {
6. startEnd,连续页码的起始页 & 最终页
7. indexFromWrap: 外部逻辑传入的当前页下标
*/
name: "Pagination",
//
props: ["total", "pageSize", "indexFromWrap"],
data() {
return {
lxyms: 7,
currentPage: this.indexFromWrap,
page: this.indexFromWrap,
quickprevIconClass: "el-icon-more",
quicknextIconClass: 'el-icon-more',
options: [{
value: 10,
label: '10条/页'
}, {
value: 20,
label: '20条/页'
}, {
value: 30,
label: '30条/页'
}, {
value: 50,
label: '50条/页'
}, {
value: 100,
label: '100条/页'
}],
currentpageSize: 10
}
name: "Pagination",
//
props: ["total", "pageSize", "indexFromWrap", "indexFrom"],
data() {
return {
lxyms: 7,
currentPage: this.indexFromWrap,
page: this.indexFromWrap,
quickprevIconClass: "el-icon-more",
quicknextIconClass: "el-icon-more",
options: [
{
value: 10,
label: "10条/页",
},
{
value: 20,
label: "20条/页",
},
{
value: 30,
label: "30条/页",
},
{
value: 50,
label: "50条/页",
},
{
value: 100,
label: "100条/页",
},
],
currentpageSize: 10,
};
},
mounted() {},
computed: {
//
totalPage() {
return Math.ceil(this.total / this.pageSize);
},
mounted() {
//- = -1
startEnd() {
let { currentPage, lxyms, totalPage } = this;
// return console.log(this)
let start;
let end;
//
start = currentPage - Math.floor(lxyms / 2);
if (start < 1) {
start = 1;
this.quickprevIconClass = "el-icon-more";
}
//
end = start + lxyms - 1; //start<1 end
// end>totalPage ?end=totalPage:""
if (end > totalPage) {
end = totalPage;
start = end - lxyms + 1; //,start
start < 1 ? (start = 1) : ""; // start
}
if (start >= 2 && end < totalPage - 1) {
start += 2;
}
if (end == totalPage - 1 && start > 1) {
start += 1;
end -= 1;
}
return { start, end };
},
computed: {
//
totalPage() {
return Math.ceil(this.total / this.pageSize)
},
//- = -1
startEnd() {
let { currentPage, lxyms, totalPage } = this
// return console.log(this)
let start;
let end;
//
start = currentPage - Math.floor(lxyms / 2)
if (start < 1) {
start = 1
this.quickprevIconClass = 'el-icon-more'
}
//
end = start + lxyms - 1 //start<1 end
// end>totalPage ?end=totalPage:""
if (end > totalPage) {
end = totalPage;
start = end - lxyms + 1; //,start
start < 1 ? start = 1 : "" // start
}
if (start >= 2 && end < totalPage - 1) {
start += 2
}
if (end == totalPage - 1 && start > 1) {
start += 1
end -= 1
}
return { start, end }
}
},
methods: {
foucus() {},
blur() {
if (!this.page) {
this.page = 1;
}
if (this.page > this.totalPage) {
this.page = this.totalPage;
}
this.updateCPage(Number(this.page));
},
methods: {
foucus() { },
blur() {
if (!this.page) {
this.page = 1
}
if (this.page > this.totalPage) {
this.page = this.totalPage
}
this.updateCPage(Number(this.page))
},
changesize() {
this.currentPage = 1
this.page = 1
this.$emit("updateCPage", this.currentPage, this.currentpageSize)
},
onMouseenter(direction) {
if (direction === 'left') {
this.quickprevIconClass = 'el-icon-d-arrow-left';
} else {
this.quicknextIconClass = 'el-icon-d-arrow-right';
}
},
updateCPage(currentPage) {
if (currentPage < 1) return
if (currentPage === this.currentPage) return;
if (currentPage > this.totalPage - 3) {
this.quicknextIconClass = 'el-icon-more'
}
if (currentPage > this.totalPage) {
this.currentPage = this.totalPage
} else {
this.currentPage = currentPage;
}
//,
this.$emit("updateCPage", this.currentPage, this.currentpageSize)
}
changesize() {
this.currentPage = 1;
this.page = 1;
this.$emit("updateCPage", this.currentPage, this.currentpageSize);
},
watch: {
currentPage: {
handler(val) {
this.page = val
},
deep: true,
immediate: true
},
//
indexFromWrap: {
handler(val) {
this.currentPage = val
},
deep: true,
immediate: true
onMouseenter(direction) {
if (direction === "left") {
this.quickprevIconClass = "el-icon-d-arrow-left";
} else {
this.quicknextIconClass = "el-icon-d-arrow-right";
}
},
updateCPage(currentPage) {
if (currentPage < 1) return;
if (currentPage === this.currentPage) return;
if (currentPage > this.totalPage - 3) {
this.quicknextIconClass = "el-icon-more";
}
if (currentPage > this.totalPage) {
this.currentPage = this.totalPage;
} else {
this.currentPage = currentPage;
}
//,
this.$emit("updateCPage", this.currentPage, this.currentpageSize);
},
},
watch: {
currentPage: {
handler(val) {
this.page = val;
},
deep: true,
immediate: true,
},
//
indexFromWrap: {
handler(val) {
console.log(val)
this.currentPage = val;
},
deep: true,
immediate: true,
},
indexFrom: {
handler(val) {
console.log(val, "100tiao");
if (val) {
this.currentpageSize = val;
} else {
this.currentpageSize = 10;
}
}
}
},
deep: true,
immediate: true,
},
},
};
</script>
<style lang="less" scoped>
.pagination {
position: absolute;
bottom: 5px;
right: 20px;
height: 40px;
margin: 0 !important;
position: absolute;
bottom: 5px;
right: 20px;
height: 40px;
margin: 0 !important;
padding: 0 !important;
display: flex;
align-items: center;
::v-deep .el-input__inner {
padding: 0 !important;
display: flex;
align-items: center;
font-size: 13px;
text-align: center;
}
::v-deep .el-input__inner {
padding: 0 !important;
font-size: 13px;
text-align: center;
::v-deep .el-input--suffix {
.el-input__inner {
padding-right: 20px !important;
}
}
span {
display: inline-block;
font-size: 13px;
min-width: 35.5px;
height: 28px;
line-height: 28px;
vertical-align: top;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
button {
margin: 0 5px;
background-color: #f4f4f5;
color: black;
outline: none;
border-radius: 2px;
vertical-align: top;
display: inline-block;
font-size: 13px;
min-width: 45px;
height: 28px;
line-height: 28px;
cursor: pointer;
box-sizing: border-box;
text-align: center;
border: 0;
&[disabled] {
color: #c0c4cc;
cursor: not-allowed;
}
::v-deep .el-input--suffix {
.el-input__inner {
padding-right: 20px !important;
}
&.active {
background-color: #409eff;
color: #fff;
}
span {
display: inline-block;
font-size: 13px;
min-width: 35.5px;
height: 28px;
line-height: 28px;
vertical-align: top;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
button {
margin: 0 5px;
background-color: #f4f4f5;
color: black;
outline: none;
border-radius: 2px;
vertical-align: top;
display: inline-block;
font-size: 13px;
min-width: 45px;
height: 28px;
line-height: 28px;
cursor: pointer;
box-sizing: border-box;
text-align: center;
border: 0;
&[disabled] {
color: #c0c4cc;
cursor: not-allowed;
}
&.active {
background-color: #409eff;
color: #fff;
}
&.buttonactive {
color: #409eff;
}
&.buttonactive {
color: #409eff;
}
}
}
</style>
</style>

View File

@ -1,225 +1,336 @@
<template>
<div :style="{ height: maxTableHeight + 'px' }" class="cardlist">
<div v-for="item in patientInfoList" :key="item.id">
<div class="carditem">
<div class="top">
<img v-if="item.sex == 'FEMALE'" src="../../../assets/manage/nvtouxiang.png" alt="" class="img" />
<img v-if="item.sex == 'MALE'" src="../../../assets/manage/touxiang.png" alt="" class="img" />
<div class="name">
{{ item.patientName }}
</div>
<div class="agesex">
{{ item.sex == 'MALE' ? '男' : "" }}
{{ item.sex == 'FEMALE' ? '女' : "" }}
<span style="padding: 0 1px;">|</span>
<span v-if="item.age">
{{ item.age }}
</span>
<span class="zy" v-if="item.patientType == 'IN_HOSPITAL_PATIENT'">在院</span>
<span class="cy" v-if="item.patientType == 'DISCHARGED_PATIENT'">出院</span>
<span class="yzy" v-if="item.patientType == 'PRE_HOSPITALIZED_PATIENT'">预住院</span>
<span class="mz" v-if="item.patientType == 'OUTPATIENT'">门诊</span>
<!-- <span class="mz" v-if="item.patientType == 'CONTRACTED_PATIENT'">签约</span> -->
</div>
<div class="diagnosis">
诊断名称{{ item.mainDiagnosis }}
</div>
</div>
<div class="bottom">
<div class="formitem">
医生{{ item.attendingPhysicianName }}
</div>
<div class="formitem">
科室{{ item.departmentName }}
</div>
<div class="formitem">
就诊时间{{ item.visitDate }}
</div>
<div class="formitem flex">
<span>
康复计划执行率
</span>
<el-progress :percentage="item.taskExecuteRate"></el-progress>
<span style="flex:0.1">({{ item.taskExecuteNum }}/{{ item.taskNum }})</span>
</div>
<div class="formitem flex">
<span>
康复计划完成率
</span>
<el-progress :percentage="item.taskFinishRate"></el-progress>
<span style="flex:0.1">({{ item.taskFinishNum }}/{{ item.taskNum }})</span>
</div>
<div class="formitem">
下次任务{{ item.nextTaskName }} - {{ item.nextTaskTime }}
</div>
</div>
<div :style="{ height: maxTableHeight + 'px' }" class="cardlist">
<div v-for="(item, index) in patientInfoList" :key="item.id">
<div
@click="handleAuthRole(item, index)"
:class="listindex == index ? 'cards' : ''"
>
<div class="carditem">
<div class="top">
<img
v-if="item.sex == 'FEMALE'"
src="../../../assets/manage/nvtouxiang.png"
alt=""
class="img"
/>
<img
v-if="item.sex == 'MALE'"
src="../../../assets/manage/touxiang.png"
alt=""
class="img"
/>
<div class="name">
{{ item.patientName }}
</div>
<div class="agesex">
{{ item.sex == "MALE" ? "男" : "" }}
{{ item.sex == "FEMALE" ? "女" : "" }}
<span style="padding: 0 1px">|</span>
<span v-if="item.age"> {{ item.age }} </span>
<span class="zy" v-if="item.patientType == 'IN_HOSPITAL_PATIENT'"
>在院</span
>
<span class="cy" v-if="item.patientType == 'DISCHARGED_PATIENT'"
>出院</span
>
<span
class="yzy"
v-if="item.patientType == 'PRE_HOSPITALIZED_PATIENT'"
>预住院</span
>
<span class="mz" v-if="item.patientType == 'OUTPATIENT'"
>门诊</span
>
<!-- <span class="mz" v-if="item.patientType == 'CONTRACTED_PATIENT'">签约</span> -->
</div>
<div class="diagnosis">诊断名称{{ item.mainDiagnosis }}</div>
<div class="diagnosi">诊断状态111</div>
</div>
<div class="bottom">
<div class="formitembutton" @click.stop="handleedit(item)">画像编辑</div>
<div class="formitem">医生{{ item.attendingPhysician }}</div>
<div class="formitem">科室{{ item.departmentName }}</div>
<div class="formitem">就诊时间{{ item.visitDate }}</div>
<div class="formitem flex">
<span> 康复计划执行率 </span>
<el-progress :percentage="item.taskExecuteRate"></el-progress>
<span style="flex: 0.1"
>({{ item.taskExecuteNum }}/{{ item.taskNum }})</span
>
</div>
<div class="formitem flex">
<span> 康复计划完成率 </span>
<el-progress :percentage="item.taskFinishRate"></el-progress>
<span style="flex: 0.1"
>({{ item.taskFinishNum }}/{{ item.taskNum }})</span
>
</div>
<div class="formitem">下次任务</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { getAge } from "@/utils/age";
export default {
name: 'cardlist',
props: {
maxTableHeight: {
type: Number,
default: 0,
name: "cardlist",
props: {
maxTableHeight: {
type: Number,
default: 0,
},
patientInfoList: {
type: Array,
default: [],
},
},
data() {
return {
listindex: 0,
};
},
mounted() {},
methods: {
handleAuthRole(item, index) {
this.listindex = index;
this.$router.push({
path: "/patient/patientdetails",
query: {
path: "/patient/patientInfo",
patientId: item.id,
cardNo: item.cardNo,
patientName: item.patientName,
patientPhone: item.patientPhone,
sex: item.sex,
birthDate: item.birthDate,
familyMemberPhone: item.familyMemberPhone,
address: item.address,
patientSource: item.patientSource,
createTime: item.createTime,
age: item.birthDate ? getAge(item.birthDate) : "",
},
patientInfoList: {
type: Array,
default: []
}
});
},
data() {
return {
}
//
handleedit(item) {
this.$router.push({
path: "/patient/Portraitedit",
query: {
path: "/patient/patientInfo",
patientId: item.id,
cardNo: item.cardNo,
patientName: item.patientName,
patientPhone: item.patientPhone,
sex: item.sex,
birthDate: item.birthDate,
familyMemberPhone: item.familyMemberPhone,
address: item.address,
patientSource: item.patientSource,
createTime: item.createTime,
hospitalAgencyName: item.hospitalAgencyName,
mainDiagnosis: item.mainDiagnosis,
age: item.birthDate ? getAge(item.birthDate) : "",
},
});
},
mounted() {
},
methods: {
}
}
},
};
</script>
<style lang="scss" scoped>
.cardlist {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-y: auto;
.carditem {
margin-right: 10px;
margin-bottom: 10px;
width: 260px;
min-height: 200px;
border: 1px solid #DCDFE6;
border-radius: 10px;
font-size: 14px;
font-weight: 600;
.bottom {
height: 165px;
padding: 0 6px;
.formitem {
height: 26px;
line-height: 26px;
font-size: 12px;
color: #756A5E;
font-weight: 550;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
overflow: hidden;
}
.flex {
display: flex;
align-items: center;
::v-deep .el-progress-bar {
flex: 1;
}
::v-deep .el-progress__text {
font-size: 12px !important;
flex: 0.5;
text-align: right;
}
span {
flex: 0.5;
max-width: 50%;
}
::v-deep .el-progress {
flex: 1;
display: flex;
align-items: center;
}
}
}
.top {
height: 85px;
background-color: #F7F8FA;
position: relative;
border-radius: 10px 10px 0 0;
margin-bottom: 10px;
.img {
margin: 10px 0 0 10px;
width: 50px;
height: 50px;
}
.agesex {
position: absolute;
right: 10px;
top: 16px;
//
.yzy {
background-color: #E8F4EC;
color: #2FB844;
border: 1.5px solid #2FB844;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
//
.mz {
background-color: #DFE4F6;
color: #2D56FB;
border: 1.5px solid #2D56FB;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
//
.zy {
background-color: #DEEDF4;
color: #1D98C6;
border: 1.5px solid #1D98C6;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
//
.cy {
background-color: #DEEFEE;
color: #2A9A82;
border: 1.5px solid #2A9A82;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
}
.diagnosis {
position: absolute;
color: #756A5E;
font-weight: 550;
left: 70px;
top: 42px;
font-size: 12px;
height: 32px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
padding-right: 4px;
}
.name {
position: absolute;
left: 70px;
top: 16px;
}
}
}
.cards {
margin-right: 10px;
margin-bottom: 10px;
width: 262px;
height: 262px;
border: 2px solid #1890ff;
border-radius: 10px;
font-size: 14px;
font-weight: 600;
z-index: 9999;
}
</style>
.cardlist {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-y: auto;
.carditem {
margin-right: 10px;
margin-bottom: 10px;
width: 260px;
min-height: 200px;
border: 1px solid #dcdfe6;
border-radius: 10px;
font-size: 14px;
font-weight: 600;
.bottom {
height: 165px;
padding: 0 6px;
.formitem {
height: 26px;
line-height: 26px;
font-size: 12px;
color: #756a5e;
font-weight: 550;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
overflow: hidden;
}
.formitembutton {
height: 26px;
line-height: 26px;
font-size: 12px;
color: #756a5e;
font-weight: 550;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
float: right;
overflow: hidden;
}
.formitembutton:hover {
color: #2d56fb;
}
.flex {
display: flex;
align-items: center;
::v-deep .el-progress-bar {
flex: 1;
}
::v-deep .el-progress__text {
font-size: 12px !important;
flex: 0.5;
text-align: right;
}
span {
flex: 0.5;
max-width: 50%;
}
::v-deep .el-progress {
flex: 1;
display: flex;
align-items: center;
}
}
}
.top {
height: 85px;
background-color: #f7f8fa;
position: relative;
border-radius: 10px 10px 0 0;
margin-bottom: 10px;
.img {
margin: 10px 0 0 10px;
width: 50px;
height: 50px;
}
.agesex {
position: absolute;
right: 10px;
top: 16px;
//
.yzy {
background-color: #e8f4ec;
color: #2fb844;
border: 1.5px solid #2fb844;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
//
.mz {
background-color: #dfe4f6;
color: #2d56fb;
border: 1.5px solid #2d56fb;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
//
.zy {
background-color: #deedf4;
color: #1d98c6;
border: 1.5px solid #1d98c6;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
//
.cy {
background-color: #deefee;
color: #2a9a82;
border: 1.5px solid #2a9a82;
border-radius: 2px;
padding: 3px 5px;
margin-left: 4px;
}
}
.diagnosis {
position: absolute;
color: #756a5e;
font-weight: 550;
left: 70px;
top: 42px;
font-size: 12px;
height: 32px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
padding-right: 4px;
}
.diagnosi {
position: absolute;
color: #756a5e;
font-weight: 550;
left: 70px;
top: 60px;
font-size: 12px;
height: 32px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
padding-right: 4px;
}
.name {
position: absolute;
left: 70px;
top: 16px;
width: 76px;
white-space: nowrap; /* 确保文本在一行内显示 */
overflow: hidden; /* 超出容器部分隐藏 */
text-overflow: ellipsis; /* 超出部分显示省略号 */
}
/* 鼠标悬停时通过title属性显示完整文本 */
.name:hover {
// cursor: default; /* */
// text-overflow: inherit; /* */
white-space: normal;
overflow: visible; /* 显示全部文本 */
}
}
}
}
</style>

View File

@ -2,78 +2,198 @@
<div class="app-container" ref="layout">
<div ref="topform" class="form">
<div class="card-table">
<div :class="type == 'card' ? 'bluediv' : ''" @click="type = 'card'">
<div :class="type == 'card' ? 'bluediv' : ''" @click="typeitem">
<img src="../../../assets/manage/kapian.png" alt="" />
<img src="../../../assets/manage/bluekapian.png" alt="" v-if="type == 'card'" />
<img
src="../../../assets/manage/bluekapian.png"
alt=""
v-if="type == 'card'"
/>
</div>
<div :class="type == 'table' ? 'bluediv' : ''" @click="type = 'table'">
<div :class="type == 'table' ? 'bluediv' : ''" @click="typeitemtable">
<img src="../../../assets/manage/liebiao.png" alt="" />
<img src="../../../assets/manage/blueliebiao.png" alt="" v-if="type == 'table'" />
<img
src="../../../assets/manage/blueliebiao.png"
alt=""
v-if="type == 'table'"
/>
</div>
</div>
<SearchFilter :labelWidths="280" style="width: calc(100% - 80px);" :widths="80" size="small" @search="handleQuery"
@reset="resetQuery" @minShowCtrol="getMaxTableHeight">
<SearchFilter
:labelWidths="280"
style="width: calc(100% - 80px)"
:widths="80"
size="small"
@search="handleQuery"
@reset="resetQuery"
@minShowCtrol="getMaxTableHeight"
>
<el-form-item label="患者姓名" prop="patientName">
<el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="handleQuery"
style="width:200px" />
<el-input
v-model="queryParams.patientName"
placeholder="请输入患者姓名"
clearable
@keyup.enter.native="handleQuery"
style="width: 200px"
/>
</el-form-item>
<el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable @keyup.enter.native="handleQuery"
style="width:200px" />
<el-input
v-model="queryParams.patientPhone"
placeholder="请输入患者电话"
clearable
@keyup.enter.native="handleQuery"
style="width: 200px"
/>
</el-form-item>
<el-form-item label="身份证号" prop="cardNo">
<el-input
v-model="queryParams.cardNo"
placeholder="请输入患者身份证号"
clearable
@keyup.enter.native="handleQuery"
style="width: 200px"
/>
</el-form-item>
<el-form-item label="诊断" prop="mainDiagnosis">
<el-input v-model="queryParams.mainDiagnosis" placeholder="请选择诊断" clearable style="width:200px"
@keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.mainDiagnosis"
placeholder="请选择诊断"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="患者来源" prop="patientSource">
<el-select v-model="queryParams.patientSource" placeholder="请选择患者来源" clearable style="width:200px">
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
:value="dict.value" />
<el-select
v-model="queryParams.patientSource"
placeholder="请选择患者来源"
clearable
style="width: 200px"
>
<el-option
v-for="dict in dict.type.patient_source"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="就诊方式" prop="visitMethod">
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width:200px">
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label"
:value="dict.value" />
<el-select
v-model="queryParams.visitMethod"
placeholder="请选择就诊方式"
clearable
style="width: 200px"
>
<el-option
v-for="dict in dict.type.visit_method"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="就诊时间" prop="visitDateStart">
<el-date-picker v-model="visitDate" type="daterange" range-separator="" start-placeholder="开始日期"
style="width:200px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
<el-date-picker
v-model="visitDate"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 200px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width:200px" clearable
@clear="clearhospitalAgency" @change="changehospitalAgency">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
<el-select
v-model="queryParams.hospitalAgencyId"
filterable
placeholder="请选择医院"
style="width: 200px"
clearable
@clear="clearhospitalAgency"
@change="changehospitalAgency"
>
<el-option
v-for="item in hospitalAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="院区" prop="campusAgencyId">
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width:200px" clearable
@clear="clearcampusAgency" @change="changecampusAgency">
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
<el-select
v-model="queryParams.campusAgencyId"
filterable
placeholder="请选择院区"
style="width: 200px"
clearable
@clear="clearcampusAgency"
@change="changecampusAgency"
>
<el-option
v-for="item in campusAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="科室" prop="departmentId">
<el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width:200px" clearable
@clear="cleardepartment" @change="changedepartment">
<el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
<el-select
v-model="queryParams.departmentId"
filterable
placeholder="请选择科室"
style="width: 200px"
clearable
@clear="cleardepartment"
@change="changedepartment"
>
<el-option
v-for="item in departmentlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="病区" prop="wardId">
<el-select v-model="queryParams.wardId" filterable placeholder="请选择病区" style="width:200px" clearable>
<el-option v-for="item in wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
<el-select
v-model="queryParams.wardId"
filterable
placeholder="请选择病区"
style="width: 200px"
clearable
>
<el-option
v-for="item in wardlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="主治医生" prop="attendingPhysicianId">
<el-select v-model="queryParams.attendingPhysicianId" style="width:200px" filterable placeholder="请选择主治医生"
clearable>
<el-option v-for="item in attendingPhysicianlist" :key="item.userId" :label="item.nickName"
:value="item.userId">
<el-select
v-model="queryParams.attendingPhysicianId"
style="width: 200px"
filterable
placeholder="请选择主治医生"
clearable
>
<el-option
v-for="item in attendingPhysicianlist"
:key="item.userId"
:label="item.nickName"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
@ -84,18 +204,32 @@
</SearchFilter>
</div>
<div ref="table" v-if="type == 'table'">
<el-table :max-height="maxTableHeight" v-loading="loading" :data="patientInfoList">
<el-table
:max-height="maxTableHeight"
v-loading="loading"
:data="patientInfoList"
>
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="患者姓名" align="center" prop="patientName" />
<el-table-column label="患者电话" align="center" prop="patientPhone" width='120' />
<el-table-column
label="患者电话"
align="center"
prop="patientPhone"
width="120"
/>
<el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope">
{{ scope.row.sex == 'MALE' ? '男' : '' }}
{{ scope.row.sex == 'FEMALE' ? '女' : '' }}
{{ scope.row.sex == "MALE" ? "男" : "" }}
{{ scope.row.sex == "FEMALE" ? "女" : "" }}
</template>
</el-table-column>
<el-table-column label="年龄" align="center" prop="age" />
<el-table-column label="出生日期" align="center" prop="birthDate" width='130' />
<el-table-column
label="出生日期"
align="center"
prop="birthDate"
width="130"
/>
<!-- <el-table-column label="签约状态" align="center" prop="signStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" />
@ -107,28 +241,68 @@
</template>
</el-table-column> -->
<!-- <el-table-column label="开证医生" align="center" prop="certificateIssuingDoctor" /> -->
<el-table-column label="就诊时间" align="center" prop="visitDate" width='130'>
<el-table-column
label="就诊时间"
align="center"
prop="visitDate"
width="130"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.visitDate, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.visitDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
<!-- <el-table-column label="入院时间" align="center" prop="admissionTime" width='130' /> -->
<el-table-column label="医院" align="center" prop="hospitalAgencyName" width='130' />
<el-table-column label="院区" align="center" prop="campusAgencyName" width='130' />
<el-table-column label="科室名称" align="center" prop="departmentName" width='130' />
<el-table-column label="病区名称" align="center" prop="wardName" width='130' />
<el-table-column label="住院/门诊号" align="center" prop="inHospitalNumber" width='130' />
<el-table-column label="主治医生" align="center" prop="attendingPhysicianName" />
<el-table-column
label="医院"
align="center"
prop="hospitalAgencyName"
width="130"
/>
<el-table-column
label="院区"
align="center"
prop="campusAgencyName"
width="130"
/>
<el-table-column
label="科室名称"
align="center"
prop="departmentName"
width="130"
/>
<el-table-column
label="病区名称"
align="center"
prop="wardName"
width="130"
/>
<el-table-column
label="住院/门诊号"
align="center"
prop="inHospitalNumber"
width="130"
/>
<el-table-column
label="主治医生"
align="center"
prop="attendingPhysicianName"
/>
<el-table-column label="就诊方式" align="center" prop="visitMethod">
<template slot-scope="scope">
<dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
<dict-tag
:options="dict.type.visit_method"
:value="scope.row.visitMethod"
/>
</template>
</el-table-column>
<!-- <el-table-column label="出院方式" align="center" prop="dischargeMethod" /> -->
<el-table-column label="患者来源" align="center" prop="patientSource">
<template slot-scope="scope">
<dict-tag :options="dict.type.patient_source" :value="scope.row.patientSource" />
<dict-tag
:options="dict.type.patient_source"
:value="scope.row.patientSource"
/>
</template>
</el-table-column>
<el-table-column label="住址" align="center" prop="address" />
@ -139,34 +313,55 @@
v-hasPermi="['manage:patientInfo:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
<el-button size="mini" type="text" @click="handleedit(scope.row)">画像编辑</el-button>
<el-button
size="mini"
type="text"
@click="handleAuthRole(scope.row)"
>详情</el-button
>
<el-button size="mini" type="text" @click="handleedit(scope.row)"
>画像编辑</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<div ref="table" v-else-if="type == 'card'">
<cardlist :maxTableHeight="maxTableHeight" :patientInfoList="patientInfoList"></cardlist>
<cardlist
:maxTableHeight="maxTableHeight"
:patientInfoList="patientInfoList"
></cardlist>
</div>
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" @updateCPage="updateCPage"></myPagination>
<myPagination
v-show="total > 0"
:total="total"
:pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum"
:indexFrom="indexFrom"
@updateCPage="updateCPage"
></myPagination>
</div>
</template>
<script>
import { getPatientList } from "@/api/manage/patientInfo";
import { getAge } from "@/utils/age";
import { selectAgencyList, getDepartmentList, getAgencyList } from "@/api/manage/selectAgencyList";
import {
selectAgencyList,
getDepartmentList,
getAgencyList,
} from "@/api/manage/selectAgencyList";
import { usergetList } from "@/api/unitconfig/patientConfiguration";
import SearchFilter from '../../components/SearchForm.vue'
import cardlist from '../components/cardlist.vue'
import SearchFilter from "../../components/SearchForm.vue";
import cardlist from "../components/cardlist.vue";
export default {
name: "PatientInfo",
dicts: ['patient_type', 'visit_method', 'sign_status', 'patient_source'],
dicts: ["patient_type", "visit_method", "sign_status", "patient_source"],
components: { SearchFilter, cardlist },
data() {
return {
type: 'card',
type: "card",
indexFrom: "",
searchData: {},
maxTableHeight: undefined,
attendingPhysicianlist: [],
@ -179,7 +374,7 @@ export default {
//
queryParams: {
pageNum: 1,
pageSize: 10,
pageSize: 100,
patientName: null,
patientPhone: null,
birthDate: null,
@ -216,35 +411,49 @@ export default {
wardlist: [],
};
},
watch: {
type: {
handler(val) {
if (val == "table") {
this.queryParams.pageSize = 10;
this.indexFrom = "";
} else if (val == "card") {
this.indexFrom = 100;
}
},
deep: true,
immediate: true,
},
},
created() {
this.getList();
this.selectAgencyinfo();
},
mounted() {
this.getMaxTableHeight()
this.screenChange()
this.getMaxTableHeight();
this.screenChange();
},
methods: {
updateCPage(index, size) {
this.queryParams.pageNum = index
this.queryParams.pageSize = size
this.queryParams.pageNum = index;
this.queryParams.pageSize = size;
this.getList();
},
//
usergetListinfo() {
usergetList({
hospitalAgencyId: this.queryParams.hospitalAgencyId,
postName: 'DOCTOR'
}).then(res => {
this.attendingPhysicianlist = res.data
})
postName: "DOCTOR",
}).then((res) => {
this.attendingPhysicianlist = res.data;
});
},
/** 详情操作 */
handleAuthRole(row) {
this.$router.push({
path: "/patient/patientdetails",
query: {
path: '/patient/patientInfo',
path: "/patient/patientInfo",
patientId: row.id,
patientName: row.patientName,
patientPhone: row.patientPhone,
@ -262,12 +471,12 @@ export default {
registrationNo:row.registrationNo,
registrationDate:row.registrationDate,
appointmentDate:row.appointmentDate,
sex: row.sex,
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : ''
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
@ -276,7 +485,7 @@ export default {
this.$router.push({
path: "/patient/Portraitedit",
query: {
path: '/patient/patientInfo',
path: "/patient/patientInfo",
patientId: row.id,
cardNo: row.cardNo,
patientName: row.patientName,
@ -289,91 +498,118 @@ export default {
createTime: row.createTime,
hospitalAgencyName: row.hospitalAgencyName,
mainDiagnosis: row.mainDiagnosis,
age: row.birthDate ? getAge(row.birthDate) : '',
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
/** 查询患者信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
getPatientList(this.queryParams).then(response => {
response.rows.forEach(e => {
e.birthDate ? e.age = getAge(e.birthDate) : ''
})
const loading = this.$loading({
lock: true,
text: "数据加载中",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
getPatientList(this.queryParams).then((response) => {
response.rows.forEach((e) => {
e.birthDate ? (e.age = getAge(e.birthDate)) : "";
});
this.patientInfoList = response.rows;
this.total = response.total;
loading.close();
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
if (this.visitDate?.length > 0) {
this.queryParams.visitDateStart = this.visitDate[0]
this.queryParams.visitDateEnd = this.visitDate[1]
this.queryParams.visitDateStart = this.visitDate[0];
this.queryParams.visitDateEnd = this.visitDate[1];
} else {
this.queryParams.visitDateStart = null
this.queryParams.visitDateEnd = null
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
}
if (this.admissionTime?.length > 0) {
this.queryParams.admissionTimeStart = this.admissionTime[0]
this.queryParams.admissionTimeEnd = this.admissionTime[1]
this.queryParams.admissionTimeStart = this.admissionTime[0];
this.queryParams.admissionTimeEnd = this.admissionTime[1];
} else {
this.queryParams.admissionTimeStart = null
this.queryParams.admissionTimeEnd = null
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;
}
this.queryParams.pageNum = 1;
this.getList();
},
typeitem() {
this.type = "card";
this.queryParams.pageSize = 100;
// console.log( this.queryParams.pageSize)
this.getList();
},
typeitemtable() {
this.type = "table";
this.queryParams.pageSize = 10;
// console.log( this.queryParams.pageSize)
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10
if (this.type == "card") {
this.queryParams = {
pageNum: 1,
pageSize: 100,
};
} else {
this.queryParams = {
pageNum: 1,
pageSize: 10,
};
}
this.admissionTime = [];
this.queryParams.admissionTimeStart = null
this.queryParams.admissionTimeEnd = null
this.visitDate = []
this.queryParams.visitDateStart = null
this.queryParams.visitDateEnd = null
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;
this.visitDate = [];
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
this.handleQuery();
},
selectAgencyinfo() {
let query = {
agencyStatus: 'ON',
nodeType: 'HOSPITAL',
}
selectAgencyList(query).then(res => {
this.hospitalAgencylist = res.data
})
agencyStatus: "ON",
nodeType: "HOSPITAL",
};
selectAgencyList(query).then((res) => {
this.hospitalAgencylist = res.data;
});
},
//
getAgencyListinfo(nodeType, id) {
let query = {
nodeType: nodeType,
};
if (nodeType == "HOSPITAL") {
query.hospitalId = id;
} else if (nodeType == "CAMPUS") {
query.campusId = id;
} else if (nodeType == "DEPARTMENT") {
query.departmentId = id;
}
if (nodeType == 'HOSPITAL') {
query.hospitalId = id
} else if (nodeType == 'CAMPUS') {
query.campusId = id
} else if (nodeType == 'DEPARTMENT') {
query.departmentId = id
}
getAgencyList(query).then(res => {
if (nodeType == 'HOSPITAL') {
this.campusAgencylist = res.data.campusList
this.departmentlist = res.data.departmentList
} else if (nodeType == 'CAMPUS') {
this.departmentlist = res.data.departmentList
getAgencyList(query).then((res) => {
if (nodeType == "HOSPITAL") {
this.campusAgencylist = res.data.campusList;
this.departmentlist = res.data.departmentList;
} else if (nodeType == "CAMPUS") {
this.departmentlist = res.data.departmentList;
}
this.wardlist = res.data.wardList
})
this.wardlist = res.data.wardList;
});
},
//
changehospitalAgency(id) {
this.getAgencyListinfo('HOSPITAL', id)
this.getAgencyListinfo("HOSPITAL", id);
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
@ -381,90 +617,91 @@ export default {
// }
// selectAgencyList(query).then(res => {
// this.campusAgencylist = res.data
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.queryParams.attendingPhysicianId = null
this.queryParams.campusAgencyId = null;
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.queryParams.attendingPhysicianId = null;
// })
//
this.usergetListinfo();
},
//
changecampusAgency(id) {
this.getAgencyListinfo('CAMPUS', id)
this.getAgencyListinfo("CAMPUS", id);
// let query = {
// nodeType: 'DEPARTMENT',
// hospitalAgencyId: id,
// }
// getDepartmentList(query).then(res => {
// this.departmentlist = res.data
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
// })
},
//
changedepartment(id) {
this.getAgencyListinfo('DEPARTMENT', id)
this.getAgencyListinfo("DEPARTMENT", id);
// let query = {
// nodeType: 'WARD',
// parentDepartmentId: id,
// }
// getDepartmentList(query).then(res => {
// this.wardlist = res.data
this.queryParams.wardId = null
this.queryParams.wardId = null;
// })
},
//
clearhospitalAgency() {
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.queryParams.attendingPhysicianId = null
this.queryParams.campusAgencyId = null;
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.queryParams.attendingPhysicianId = null;
setTimeout(() => {
this.attendingPhysicianlist = []
this.attendingPhysicianlist = [];
}, 1000);
},
//
clearcampusAgency() {
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
},
//
cleardepartment() {
this.queryParams.wardId = null
this.queryParams.wardId = null;
if (this.queryParams.departmentId) {
this.getAgencyListinfo('DEPARTMENT', this.queryParams.departmentId)
this.getAgencyListinfo("DEPARTMENT", this.queryParams.departmentId);
} else if (this.queryParams.campusAgencyId) {
this.getAgencyListinfo('CAMPUS', this.queryParams.campusAgencyId)
this.getAgencyListinfo("CAMPUS", this.queryParams.campusAgencyId);
} else if (this.queryParams.hospitalAgencyId) {
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
}
},
//
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight //
const layoutDiv = this.$refs.layout
const formDiv = this.$refs.topform
const mb8Div = this.$refs.mb8
const windowInnerHeight = window.innerHeight; //
const layoutDiv = this.$refs.layout;
const formDiv = this.$refs.topform;
const mb8Div = this.$refs.mb8;
this.maxTableHeight =
windowInnerHeight - 134 -
windowInnerHeight -
134 -
this.getBoxPadding(layoutDiv) -
this.getBoxHeight(mb8Div) -
this.getBoxHeight(formDiv)
this.getBoxHeight(formDiv);
},
// resize
screenChange() {
// resizeresize
window.addEventListener('resize', this.getMaxTableHeight, true)
window.addEventListener("resize", this.getMaxTableHeight, true);
//
//
// beforeDestroy
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.getMaxTableHeight, true)
})
this.$once("hook:beforeDestroy", () => {
window.removeEventListener("resize", this.getMaxTableHeight, true);
});
},
}
},
};
</script>
<style lang="scss" scoped>
@ -480,7 +717,7 @@ export default {
margin-bottom: 10px;
width: 260px;
min-height: 200px;
border: 1px solid #DCDFE6;
border: 1px solid #dcdfe6;
border-radius: 10px;
}
@ -514,7 +751,7 @@ export default {
width: 30px;
height: 30px;
border-radius: 5px;
border: 1px solid #575B66;
border: 1px solid #575b66;
position: relative;
}
@ -527,7 +764,7 @@ export default {
}
.bluediv {
border: 1px solid #409EFF !important;
border: 1px solid #409eff !important;
}
}
</style>

View File

@ -19,7 +19,7 @@
</el-form-item> -->
<!-- 门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL -->
<!-- <el-form-item label="就诊方式" prop="visitMethod">
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width:200px">
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width:220px">
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item> -->
@ -82,23 +82,23 @@
</el-form-item>
<!-- <el-form-item label="出生日期" prop="birthDate">
<el-date-picker clearable v-model="queryParams.birthDate" type="date" value-format="yyyy-MM-dd"
style="width:200px" placeholder="请选择出生日期">
style="width:220px" placeholder="请选择出生日期">
</el-date-picker>
</el-form-item> -->
<!-- 预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT签约患者CONTRACTED_PATIENT -->
<!-- <el-form-item label="患者类型" prop="patientType">
<el-select v-model="queryParams.patientType" placeholder="请选择患者类型" clearable style="width:200px">
<el-select v-model="queryParams.patientType" placeholder="请选择患者类型" clearable style="width:220px">
<el-option v-for="dict in dict.type.patient_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item> -->
<!-- 微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END -->
<!-- <el-form-item label="患者来源" prop="patientSource">
<el-select v-model="queryParams.patientSource" placeholder="请选择就诊方式" clearable style="width:200px">
<el-select v-model="queryParams.patientSource" placeholder="请选择就诊方式" clearable style="width:220px">
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item> -->
<!-- <el-form-item label="出院方式" prop="dischargeMethod">
<el-input v-model="queryParams.dischargeMethod" placeholder="请输入出院方式" clearable style="width:200px"
<el-input v-model="queryParams.dischargeMethod" placeholder="请输入出院方式" clearable style="width:220px"
@keyup.enter.native="handleQuery" />
</el-form-item> -->
<!-- <el-form-item>
@ -192,7 +192,12 @@
<el-table-column label="住址" align="center" prop="address" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="addsign(scope.row)">意向签约</el-button>
<el-button size="mini" type="text" @click="updatesign(scope.row)" v-if="scope.row.serviceStatus=='INTENTIONAL_SIGNING'" >修改意向</el-button>
<el-button size="mini" type="text" @click="addsign(scope.row)" v-if="scope.row.serviceStatus==''||scope.row.serviceStatus=='SERVICE_END'||scope.row.serviceStatus==null" >意向签约</el-button>
<el-button size="mini" type="text" @click="newsign(scope.row)" v-if="scope.row.serviceStatus=='SERVICE_CENTER'" >重新签约</el-button>
<!-- <el-button size="mini" type="text" @click="addsign(scope.row)" v-else >意向签约</el-button> -->
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:preHospitalized:edit']">编辑</el-button>
@ -211,21 +216,21 @@
<el-form ref="openform" :model="form" :rules="rules" label-width="100px" :inline="true">
<div class="titlenew">基本信息</div>
<el-form-item label="患者姓名" prop="patientName">
<el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:200px" />
<el-input v-model="form.patientName" placeholder="请输入患者姓名" style="width:220px" />
</el-form-item>
<el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:200px" maxlength="11" />
<el-input v-model="form.patientPhone" placeholder="请输入患者电话" style="width:220px" maxlength="11" />
</el-form-item>
<el-form-item label="家属电话" prop="familyMemberPhone">
<el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:200px" maxlength="11" />
<el-input v-model="form.familyMemberPhone" placeholder="请输入家属电话" style="width:220px" maxlength="11" />
</el-form-item>
<!-- <el-form-item label="出生日期" prop="birthDate">
<el-date-picker clearable v-model="form.birthDate" style="width:200px" type="date" value-format="yyyy-MM-dd"
<el-date-picker clearable v-model="form.birthDate" style="width:220px" type="date" value-format="yyyy-MM-dd"
placeholder="请选择出生日期">
</el-date-picker>
</el-form-item> -->
<el-form-item label="身份证号" prop="cardNo">
<el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:200px" maxlength="18" />
<el-input v-model="form.cardNo" placeholder="请输入身份证号" style="width:220px" maxlength="18" />
</el-form-item>
<!-- <el-form-item label="性别" prop="sex">
<el-radio-group v-model="form.sex" disabled>
@ -234,86 +239,86 @@
</el-radio-group>
</el-form-item> -->
<!-- <el-form-item label="年龄" prop="age">
<el-input v-model="form.age" placeholder="请输入年龄" style="width:200px" />
<el-input v-model="form.age" placeholder="请输入年龄" style="width:220px" />
</el-form-item> -->
<el-form-item label="住址" prop="address">
<el-input type="textarea" style="width:200px" :rows="2" placeholder="请输入住址" v-model="form.address" />
<el-input type="textarea" style="width:220px" :rows="2" placeholder="请输入住址" v-model="form.address" />
</el-form-item>
<div class="titlenew" style="margin-top:20px">就诊信息</div>
<el-form-item label="就诊方式" prop="visitMethod">
<el-select v-model="form.visitMethod" placeholder="请选择就诊方式" style="width:200px">
<el-select v-model="form.visitMethod" placeholder="请选择就诊方式" style="width:220px">
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="主要诊断" prop="mainDiagnosis">
<el-input v-model="form.mainDiagnosis" placeholder="请输入主要诊断" style="width:200px" />
<el-input v-model="form.mainDiagnosis" placeholder="请输入主要诊断" style="width:220px" />
</el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select v-model="form.hospitalAgencyId" filterable placeholder="请选择医院" style="width:200px" clearable
<el-select v-model="form.hospitalAgencyId" filterable placeholder="请选择医院" style="width:220px" clearable
@clear="clearhospitalAgency(1)" @change="changehospitalAgency($event, 1)">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="院区" prop="campusAgencyId" v-show="form.hospitalAgencyId">
<el-select v-model="form.campusAgencyId" filterable placeholder="请选择院区" style="width:200px" clearable
<el-select v-model="form.campusAgencyId" filterable placeholder="请选择院区" style="width:220px" clearable
@clear="clearcampusAgency(1)" @change="changecampusAgency($event, 1)">
<el-option v-for="item in form_campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="科室名称" prop="departmentId" v-show="form.hospitalAgencyId">
<el-select v-model="form.departmentId" filterable placeholder="请选择科室" style="width:200px" clearable
<el-select v-model="form.departmentId" filterable placeholder="请选择科室" style="width:220px" clearable
@clear="cleardepartment(1)" @change="changedepartment($event, 1)">
<el-option v-for="item in form_departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="预约病区" prop="wardId" v-show="form.hospitalAgencyId">
<el-select v-model="form.wardId" filterable placeholder="请选择病区" style="width:200px" clearable>
<el-select v-model="form.wardId" filterable placeholder="请选择病区" style="width:220px" clearable>
<el-option v-for="item in form_wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="主治医生" prop="attendingPhysician" v-show="form.hospitalAgencyId">
<el-select v-model="form.attendingPhysicianId" filterable placeholder="请选择主治医生" style="width:200px" clearable>
<el-select v-model="form.attendingPhysicianId" filterable placeholder="请选择主治医生" style="width:220px" clearable>
<el-option v-for="item in form_attendingPhysicianlist" :key="item.userId" :label="item.nickName"
:value="item.userId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="门诊号" prop="inHospitalNumber" v-show="form.visitMethod == 'OUTPATIENT_SERVICE'">
<el-input v-model="form.inHospitalNumber" placeholder="请输入门诊号" style="width:200px"
<el-input v-model="form.inHospitalNumber" placeholder="请输入门诊号" style="width:220px"
onKeyUp="value=value.replace(/[\W]/g,'')" />
</el-form-item>
<el-form-item label="住院号" prop="inHospitalNumber" v-show="form.visitMethod == 'BE_IN_HOSPITAL'">
<el-input v-model="form.inHospitalNumber" placeholder="请输入住院号" style="width:200px"
<el-input v-model="form.inHospitalNumber" placeholder="请输入住院号" style="width:220px"
onKeyUp="value=value.replace(/[\W]/g,'')" />
</el-form-item>
<el-form-item label="责任护士" prop="responsibleNurse" v-show="form.visitMethod == 'BE_IN_HOSPITAL'">
<el-input v-model="form.responsibleNurse" placeholder="请输入责任护士" style="width:200px" />
<el-input v-model="form.responsibleNurse" placeholder="请输入责任护士" style="width:220px" />
</el-form-item>
<el-form-item label="就诊流水号" prop="visitSerialNumber">
<el-input v-model="form.visitSerialNumber" placeholder="请输入就诊流水号" style="width:200px" />
<el-input v-model="form.visitSerialNumber" placeholder="请输入就诊流水号" style="width:220px" />
</el-form-item>
<el-form-item label="门诊时间" prop="dischargeTime" v-show="form.visitMethod == 'OUTPATIENT_SERVICE'">
<el-date-picker clearable v-model="form.dischargeTime" type="datetime" value-format="yyyy-MM-dd HH:mm"
format='yyyy-MM-dd HH:mm' placeholder="请选择门诊时间" style="width:200px">
format='yyyy-MM-dd HH:mm' placeholder="请选择门诊时间" style="width:220px">
</el-date-picker>
</el-form-item>
<el-form-item label="入院时间" prop="admissionTime" v-if="form.visitMethod == 'BE_IN_HOSPITAL'">
<el-date-picker clearable v-model="form.admissionTime" type="datetime" value-format="yyyy-MM-dd HH:mm"
format='yyyy-MM-dd HH:mm' style="width:200px" placeholder="请选择入院时间">
format='yyyy-MM-dd HH:mm' style="width:220px" placeholder="请选择入院时间">
</el-date-picker>
</el-form-item>
<el-form-item label="出院时间" prop="dischargeTime" v-show="form.visitMethod == 'BE_IN_HOSPITAL'">
<el-date-picker clearable v-model="form.dischargeTime" type="datetime" value-format="yyyy-MM-dd HH:mm"
format='yyyy-MM-dd HH:mm' :picker-options="pickerOptions" style="width:200px" placeholder="请选择出院时间">
format='yyyy-MM-dd HH:mm' :picker-options="pickerOptions" style="width:220px" placeholder="请选择出院时间">
</el-date-picker>
</el-form-item>
<el-form-item label="手术名称" prop="surgicalName">
<el-input v-model="form.surgicalName" placeholder="请输入手术名称" style="width:200px" />
<el-input v-model="form.surgicalName" placeholder="请输入手术名称" style="width:220px" />
</el-form-item>
<el-form-item label="手术记录" prop="surgicalRecord" v-show="form.visitMethod == 'BE_IN_HOSPITAL'">
<editor v-model="form.surgicalRecord" :min-height="192" style="width:838px" />
@ -325,60 +330,60 @@
<editor v-model="form.outHospitalInfo" :min-height="192" style="width:838px" />
</el-form-item>
<!-- <el-form-item label="患者来源" prop="patientSource">
<el-select v-model="form.patientSource" placeholder="请选择患者来源" clearable style="width:200px">
<el-select v-model="form.patientSource" placeholder="请选择患者来源" clearable style="width:220px">
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="开证医生" prop="certificateIssuingDoctor">
<el-input v-model="form.certificateIssuingDoctor" placeholder="请输入开证医生" style="width:200px" />
<el-input v-model="form.certificateIssuingDoctor" placeholder="请输入开证医生" style="width:220px" />
</el-form-item>
<el-form-item label="预约治疗组" prop="appointmentTreatmentGroup">
<el-input v-model="form.appointmentTreatmentGroup" placeholder="请输入预约治疗组" style="width:200px" />
<el-input v-model="form.appointmentTreatmentGroup" placeholder="请输入预约治疗组" style="width:220px" />
</el-form-item>
<el-form-item label="登记号" prop="registrationNo">
<el-input v-model="form.registrationNo" placeholder="请输入登记号" style="width:200px" />
<el-input v-model="form.registrationNo" placeholder="请输入登记号" style="width:220px" />
</el-form-item>
<el-form-item label="登记日期" prop="registrationDate">
<el-date-picker clearable v-model="form.registrationDate" type="date" value-format="yyyy-MM-dd"
style="width:200px" placeholder="请选择登记日期">
style="width:220px" placeholder="请选择登记日期">
</el-date-picker>
</el-form-item>
<el-form-item label="预约时间" prop="appointmentDate">
<el-date-picker clearable v-model="form.appointmentDate" type="date" value-format="yyyy-MM-dd"
style="width:200px" placeholder="请选择预约时间">
style="width:220px" placeholder="请选择预约时间">
</el-date-picker>
</el-form-item>
<el-form-item label="患者类型" prop="patientType">
<el-select v-model="form.patientType" placeholder="请选择患者类型" style="width:200px">
<el-select v-model="form.patientType" placeholder="请选择患者类型" style="width:220px">
<el-option v-for="dict in dict.type.patient_type" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="签约状态" prop="signStatus">
<el-select v-model="form.signStatus" placeholder="请选择签约状态" style="width:200px">
<el-select v-model="form.signStatus" placeholder="请选择签约状态" style="width:220px">
<el-option v-for="dict in dict.type.sign_status" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="签约时间" prop="signTime">
<el-date-picker clearable v-model="form.signTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择签约时间"
style="width:200px">
style="width:220px">
</el-date-picker>
</el-form-item>
<el-form-item label="出院时间" prop="dischargeTime">
<el-date-picker clearable v-model="form.dischargeTime" type="date" value-format="yyyy-MM-dd" style="width:200px"
<el-date-picker clearable v-model="form.dischargeTime" type="date" value-format="yyyy-MM-dd" style="width:220px"
placeholder="请选择出院时间">
</el-date-picker>
</el-form-item>
<el-form-item label="门诊号" prop="inHospitalNumber">
<el-input v-model="form.inHospitalNumber" placeholder="请输入门诊号" style="width:200px" />
<el-input v-model="form.inHospitalNumber" placeholder="请输入门诊号" style="width:220px" />
</el-form-item>
<el-form-item label="出院方式" prop="dischargeMethod">
<el-input v-model="form.dischargeMethod" placeholder="请输入出院方式" style="width:200px" />
<el-input v-model="form.dischargeMethod" placeholder="请输入出院方式" style="width:220px" />
</el-form-item>
<el-form-item label="微信openid" prop="openId">
<el-input v-model="form.openId" placeholder="请输入微信openid" style="width:200px" />
<el-input v-model="form.openId" placeholder="请输入微信openid" style="width:220px" />
</el-form-item>
-->
</el-form>
@ -388,10 +393,10 @@
</div>
</el-dialog>
<!-- 意向签约 -->
<el-dialog title="意向签约" :visible.sync="addsignopen" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="addsignopen" width="500px" append-to-body>
<el-form ref="addsignform" :model="addsignform" :rules="rules" label-width="100px">
<el-form-item label="开单医生" prop="billingDoctorId">
<el-select v-model="addsignform.billingDoctorId" filterable placeholder="请选择开单医生" style="width:200px"
<el-select v-model="addsignform.billingDoctorId" filterable placeholder="请选择开单医生" style="width:220px"
clearable>
<el-option v-for="item in addsignattendingPhysicianlist" :key="item.userId" :label="item.nickName"
:value="item.userId">
@ -399,7 +404,7 @@
</el-select>
</el-form-item>
<el-form-item label="意向来源" prop="intentionalSource">
<el-select v-model="addsignform.intentionalSource" filterable placeholder="请选择意向来源" style="width:200px"
<el-select v-model="addsignform.intentionalSource" filterable placeholder="请选择意向来源" style="width:220px"
clearable>
<el-option label="医生开单" value="DOCTOR_BILLING">
</el-option>
@ -407,6 +412,9 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="danger" @click="cancelupload" v-if="title=='重新签约”'">撤销签约</el-button> -->
<el-button type="danger" @click="cancelupload" v-if="title=='修改意向'">撤销意向签约</el-button>
<el-button type="primary" @click="addsignupload"> </el-button>
<el-button @click="addsignopen = false"> </el-button>
</div>
@ -642,6 +650,7 @@ export default {
this.queryParams.pageSize = size
this.getList();
},
cancelupload(){},
addsignupload() {
if (this.addsignform.billingDoctorId && this.addsignattendingPhysicianlist?.length > 0) {
this.addsignform.billingDoctorName = this.addsignattendingPhysicianlist.find(e => e.userId == this.addsignform.billingDoctorId)?.nickName
@ -651,6 +660,34 @@ export default {
this.addsignopen = false
})
},
//
updatesign(item){
console.log(item,'row')
this.addsignform = {
billingDoctorId: '',
billingDoctorName: '',
intentionalSource: '',
patientId: item.id,
}
this.usergetListinfotwo(item.hospitalAgencyId)
this.resetForm("addsignform");
this.title='修改意向'
this.addsignopen = true
},
//
newsign(item){
this.addsignform = {
billingDoctorId: '',
billingDoctorName: '',
intentionalSource: '',
patientId: item.id,
}
this.title='重新签约'
this.usergetListinfotwo(item.hospitalAgencyId)
this.resetForm("addsignform");
this.addsignopen = true
},
addsign(item) {
this.addsignform = {
billingDoctorId: '',
@ -661,6 +698,8 @@ export default {
this.usergetListinfotwo(item.hospitalAgencyId)
this.resetForm("addsignform");
this.addsignopen = true
this.title='意向签约'
},
//
usergetListinfotwo(id) {