Browse Source

20250301

master
nicky 5 months ago
parent
commit
71d4f35eba
  1. 258
      src/layouts/BasicLayout.less
  2. 280
      src/layouts/BasicLayout.vue
  3. 2
      src/views/Patient/components/patient-detail.vue
  4. 9
      src/views/Patient/components/patient-list.vue
  5. 2
      src/views/Patient/index.vue
  6. 125
      src/views/document/index.vue
  7. 17
      src/views/thrombolysis/components/throm-before.vue
  8. 4
      src/views/thrombolysis/components/throm-ing.vue
  9. 7
      src/views/thrombolysis/components/throm-interfere.vue
  10. 420
      src/views/thrombolysis/components/throm-report.vue
  11. 9
      src/views/thrombolysis/components/throm-result.vue

258
src/layouts/BasicLayout.less

@ -1,168 +1,180 @@
.global-layout{
user-select: none; /* 禁止文本选择 */
-webkit-user-select: none; /* Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE */
.page-layout{
background-color: #f6f6f6;
width: 100vw;
height: 100vh;
.ant-layout-sider{
flex: 0 0 138px !important;
max-width: 138px !important;
min-width: 138px !important;
width: 138px !important;
background-color: #fff;
.ant-layout-header{
display: flex;
align-items: center;
padding: 0 !important;
height: 59px !important;
background-color: #FFFFFF !important;
border-bottom: 1px solid #eee;
box-sizing: border-box;
.layout-sider-header-row{
display: flex;
// padding: .3rem 1rem;
height: 59px;
line-height: 59px;
align-items: center;
box-sizing: border-box;
overflow: hidden;
justify-content: center;
border-bottom: 1px solid #eee;
// border-bottom: 1px solid #eee;
padding-left: 28px;
.layout-sider-header-row-icon{
display: flex;
align-items: center;
.sider-header-icon{
display: inline-block;
text-align: center;
width: 50px;
height: 50px;
line-height: 50px;
background-color: #659aff;
border-radius: 50px;
width: 44px;
height: 44px;
background-color: #007AFF;
border-radius: 9px;
overflow: hidden;
color: #FFFFFF;
font-size: 28px;
font-weight: 500;
font-size: 26px;
line-height: 44px;
}
}
.layout-sider-header-row-title{
flex: 1;
font-size: .6rem;
margin-left: 0.2rem;
font-family: Source Han Sans, Source Han Sans;
font-weight: 500;
font-size: 22px;
color: #3D3D3D;
// line-height: 32px;
text-align: left;
font-style: normal;
text-transform: none;
}
}
.layout-sider-menu{
padding: 10px;
padding-top: 20px;
user-select: none; /* 禁止文本选择 */
-webkit-user-select: none; /* Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE */
.menus{
.menu-item{
border-radius: .5rem;
color: #666666;
overflow: hidden;
display: flex;
justify-content: flex-start;
align-items: center;
padding: .4rem .6rem;
margin-bottom: .5rem;
cursor: pointer;
&.active{
color: #FFFFFF;
box-shadow: 0 1px 6px rgba(238, 238, 238, 1);
background-color: #0576fe;
}
.menu-item-icon{
img{
width: 25px;
height: 25px;
}
.patient-box{
flex: 1;
display: flex;
justify-content: center;
// padding: 0 20px;
box-sizing: border-box;
.paitent-title{
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
font-size: 22px;
font-weight: bold;
margin-right: 1rem;
}
.patient-info {
height: 100%;
display: flex;
align-items: center;
font-size: 22px;
.lable {
color: #999999;
font-weight: 400;
margin-right: 10px;
}
.text {
color: #333333;
&.text-red{
color: red;
font-weight: 600;
}
.menu-item-name{
flex: 1;
text-align: left;
margin-left: .5rem;
text-align: center;
font-size: 22px;
&.mr-sm{
margin-right: 20px;
}
}
}
}
}
.ant-layout{
height: 100vh;
display: flex;
flex-direction: column;
.ant-layout-header{
padding: 0 !important;
height: 59px !important;
line-height: 59px !important;
background-color: #FFFFFF !important;
border-bottom: 1px solid #eee;
box-sizing: border-box;
.patient-box{
.patient-action{
display: flex;
justify-content: flex-start;
padding: 0 20px;
box-sizing: border-box;
.paitent-title{
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
font-size: 22px;
font-size: 22px;
padding: 0 .2rem;
align-items: center;
margin-left: 1rem;
.action{
padding: 0 .2rem;
font-weight: bold;
margin-right: 1rem;
}
.patient-info {
height: 100%;
color: red;
display: flex;
flex-direction: column;
align-items: center;
font-size: 18px;
.lable {
// color: #AAAAAA;
padding: 0 .5rem 0 0.3rem;
}
.text {
color: #000000;
// padding: 0 1rem 0 0;
&.text-red{
color: red;
}
&.mr-sm{
margin-right: .5rem;
}
}
}
.patient-action{
display: flex;
font-size: 22px;
padding: 0 .2rem;
align-items: center;
margin-left: 1rem;
.action{
padding: 0 .2rem;
font-weight: bold;
color: red;
}
}
.layout-sider-header-row-title{
background-color: #fff;
height: 59px;
line-height: 59px;
flex: 1;
font-size: 22px;
margin-left: 0rem;
padding-left: 20px;
}
}
.ant-layout{
height: calc(100vh - 60px);
display: flex;
.ant-layout-sider{
flex: 0 0 92px !important;
max-width: 92px !important;
min-width: 92px !important;
width: 92px !important;
background-color: #fff;
.layout-sider-menu{
padding: 6px;
padding-top: 20px;
.menus{
.menu-item{
width: 80px;
height: 80px;
border-radius: 8px;
color: #666666;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: .4rem;
margin-bottom: .5rem;
cursor: pointer;
&.active{
color: #FFFFFF;
box-shadow: 0 1px 6px rgba(238, 238, 238, 1);
background-color: #007AFF;
}
.menu-item-icon{
padding: 5px 0 3px 0;
img{
width: 37px;
height: 29px;
}
}
.menu-item-name{
flex: 1;
text-align: center;
font-size: 22px;
line-height: 32px;
}
}
}
}
.layout-sider-header-row-title{
background-color: #fff;
height: 59px;
line-height: 59px;
flex: 1;
font-size: 22px;
margin-left: 0rem;
padding-left: 20px;
}
}
.ant-layout-content{
position: relative;
flex: 1;

280
src/layouts/BasicLayout.vue

@ -1,127 +1,121 @@
<template>
<div class="global-layout">
<a-layout class="page-layout">
<a-layout-sider>
<div class="layout-sider-header">
<div class="layout-sider-header-row">
<div class="layout-sider-header-row-icon">
<span class="sider-header-icon"></span>
</div>
<!-- <div class="layout-sider-header-row-title">质控卒中工作站</div> -->
<a-layout-header>
<div class="layout-sider-header-row">
<div class="layout-sider-header-row-icon">
<span class="sider-header-icon"></span>
</div>
<div class="layout-sider-header-row-title">
卒中急救质控系统
</div>
</div>
<div class="layout-sider-menu">
<div class="menus" v-for="(item, index) in menus" :key="index">
<div class="menu-item" :class="{'active': current == index}"
@click="handleClickMenu(item, index)">
<div class="menu-item-icon">
<!-- <img src="@/assets/images/plus.png" alt="" /> -->
<img :src="item.iconactive" alt="" v-if="current == index" />
<img :src="item.icon" alt="" v-else />
</div>
<div class="menu-item-name">{{item.name}}</div>
<div class="patient-box">
<template v-if="patientData.firstAidId && patientData.finish_status != 1">
<div class="patient-info" @click="onClickPat">
<span class="lable">姓名: </span>
<span class="text text-red mr-sm">{{patientData.patientName || '-'}}</span>
<span class="lable">性别: </span>
<span class="text mr-sm">
{{patientData.patientGender == 1 ? '女' : patientData.patientGender == 0 ? '男' : '-'}}
</span>
<span class="lable">年龄: </span>
<span class="text">{{patientData.patientAge ? (patientData.patientAge+'岁') : '-'}}</span>
<!-- <span class="lable">证件号: </span>
<span
class="text">{{patientData.patientIdCardNo ? utils.maskIDCard(patientData.patientIdCardNo) : '-'}}</span>
<span class="lable">门急诊号: </span>
<span class="text">{{patientData.servialNo || '-'}}</span> -->
</div>
</div>
<div class="patient-action">
<div class="action" @click="showDrawer"><a-icon type="minus-circle" /></div>
<!-- <div class="action"><a-icon type="pause-circle" /></div> -->
</div>
</template>
</div>
</a-layout-sider>
<a-layout >
<a-layout-header>
<div class="patient-box">
<div class="paitent-title">卒中急救质控系统</div>
<template v-if="patientData.firstAidId && patientData.finish_status != 1">
<div class="patient-info" @click="onClickPat">
(
<span class="lable">姓名: </span>
<span class="text text-red mr-sm">{{patientData.patientName || '-'}}</span>
<span class="lable">性别: </span>
<span class="text mr-sm">
{{patientData.patientGender == 1 ? '女' : patientData.patientGender == 0 ? '男' : '-'}}
</span>
<span class="lable">年龄: </span>
<span
class="text">{{patientData.patientAge ? (patientData.patientAge+'岁') : '-'}}</span>
<!-- <span class="lable">证件号: </span>
<span
class="text">{{patientData.patientIdCardNo ? utils.maskIDCard(patientData.patientIdCardNo) : '-'}}</span>
<span class="lable">门急诊号: </span>
<span class="text">{{patientData.servialNo || '-'}}</span> -->
)
</div>
<div class="patient-action">
<div class="action" @click="showDrawer"><a-icon type="minus-circle" /></div>
<!-- <div class="action"><a-icon type="pause-circle" /></div> -->
</div>
</template>
</div>
</a-layout-header>
<a-layout-content ref="layoutContent" id="layoutContent">
<div class="global-layout-content" id="globalLayoutContent">
<router-view />
</div>
<a-modal v-model="termVisible" title="提示">
<template slot="footer">
<a-button key="submit" @click="handleTermin(0)">暂停急救</a-button>
<a-button key="back" type="primary" @click="handleTermin(1)">终止急救</a-button>
</template>
<p style="line-height: 32px;"><a-icon type="exclamation-circle" style="color: orange;font-weight: bold;font-size: 20px;margin-right: 12px" />是否结束本次急救?</p>
</a-modal>
<!-- <a-drawer placement="bottom" :closable="false" :visible="termVisible" @close="onTermClose"
:get-container="false" :wrap-style="{ position: 'absolute' }">
<div v-if="termVisible">
<div style="text-align: center;font-size: 1.2rem; line-height: 4.2rem;">
<div style="border-bottom: 1px solid #eee;" @click="handleTermin(1)">终止急救</div>
<div style="border-bottom: 2px solid #eee;" @click="handleTermin(0)">暂停急救</div>
<div style="color: rgba(0, 0, 0, 0.6);" @click="onTermClose">取消</div>
</div>
</a-layout-header>
<a-layout-content>
<a-layout>
<a-layout-sider>
<div class="layout-sider-header">
</div>
</a-drawer> -->
<a-drawer placement="left" :visible="visible" width="380" @close="onClose" :getContainer="false"
:closable="false" :wrap-style="{ position: 'absolute' }">
<div class="person-drawer">
<div class="person-header">
<div class="person-header-avatar">
<img src="@/assets/images/ys.png" alt="" />
<div class="layout-sider-menu">
<div class="menus" v-for="(item, index) in menus" :key="index">
<div class="menu-item" :class="{'active': current == index}"
@click="handleClickMenu(item, index)">
<div class="menu-item-icon">
<!-- <img src="@/assets/images/plus.png" alt="" /> -->
<img :src="item.iconactive" alt="" v-if="current == index" />
<img :src="item.icon" alt="" v-else />
</div>
<div class="menu-item-name">{{item.name}}</div>
</div>
<div class="person-header-name">
<span class="user-name">{{loginInfo?.name}}</span>
<a-icon type="woman" />
</div>
</div>
<div class="person-float-info">
<div class="person-float-info-row"><span class="label">职位: </span><span
class="text">{{loginInfo?.deptName}}</span></div>
<div class="person-float-info-row"><span class="label">联系方式: </span><span
class="text">{{loginInfo?.contract}}</span></div>
</div>
<div class="person-content">
<div class="person-content-row">
<span class="label">所属医院: </span>
<span class="text">{{loginInfo?.hospitalName}}</span>
</div>
</a-layout-sider>
<a-layout-content ref="layoutContent" id="layoutContent">
<div class="global-layout-content" id="globalLayoutContent">
<router-view />
</div>
<a-modal v-model="termVisible" title="提示">
<template slot="footer">
<a-button key="submit" @click="handleTermin(0)">暂停急救</a-button>
<a-button key="back" type="primary" @click="handleTermin(1)">终止急救</a-button>
</template>
<p style="line-height: 32px;"><a-icon type="exclamation-circle"
style="color: orange;font-weight: bold;font-size: 20px;margin-right: 12px" />是否结束本次急救?
</p>
</a-modal>
<a-drawer placement="left" :visible="visible" width="380" @close="onClose" :getContainer="false"
:closable="false" :wrap-style="{ position: 'absolute' }">
<div class="person-drawer">
<div class="person-header">
<div class="person-header-avatar">
<img src="@/assets/images/ys.png" alt="" />
</div>
<div class="person-header-name">
<span class="user-name">{{loginInfo?.name}}</span>
<a-icon type="woman" />
</div>
</div>
<div class="person-content-row">
<span class="label">所属科室: </span>
<span class="text">{{loginInfo?.deptName}}</span>
<div class="person-float-info">
<div class="person-float-info-row"><span class="label">职位: </span><span
class="text">{{loginInfo?.deptName}}</span></div>
<div class="person-float-info-row"><span class="label">联系方式: </span><span
class="text">{{loginInfo?.contract}}</span></div>
</div>
<div class="person-content-row">
<span class="label">联系客服: </span>
<span class="text">{{loginInfo?.customer}}</span>
<div class="person-content">
<div class="person-content-row">
<span class="label">所属医院: </span>
<span class="text">{{loginInfo?.hospitalName}}</span>
</div>
<div class="person-content-row">
<span class="label">所属科室: </span>
<span class="text">{{loginInfo?.deptName}}</span>
</div>
<div class="person-content-row">
<span class="label">联系客服: </span>
<span class="text">{{loginInfo?.customer}}</span>
</div>
<div class="person-content-row">
<span class="label">当前版本: </span>
<span class="text">正式版v{{loginInfo?.version}}</span>
</div>
</div>
<div class="person-content-row">
<span class="label">当前版本: </span>
<span class="text">正式版v{{loginInfo?.version}}</span>
<div class="person-footer">
<a-button class="persion-footer-button person-footer-reset" block>修改密码</a-button>
<a-button class="persion-footer-button person-footer-logout" type="primary" block
@click="logout">退出登录</a-button>
</div>
</div>
<div class="person-footer">
<a-button class="persion-footer-button person-footer-reset" block>修改密码</a-button>
<a-button class="persion-footer-button person-footer-logout" type="primary" block
@click="logout">退出登录</a-button>
</div>
</div>
</a-drawer>
</a-layout-content>
</a-layout>
</a-drawer>
</a-layout-content>
</a-layout>
</a-layout-content>
</a-layout>
</div>
@ -260,18 +254,24 @@
this.setPatientDataCur({});
if (this.$route.name != 'PatientList') this.$router.replace('/firstaid/patientList')
}
this.current = 0
this.current_ = 0
this.current = 0
this.current_ = 0
},
async handleTermin(finishStatus) {
const { firstAidId } = this.patientData;
const {
firstAidId
} = this.patientData;
let res = await updateFirstAid({
firstAidId,
finishStatus
});
const { code, data, msg } = res;
const {
code,
data,
msg
} = res;
if (code === 200) {
this.setPatientData({})
this.setTimerData({});
@ -279,7 +279,7 @@
} else {
this.$message.error(msg);
}
this.onTermClose()
},
showDrawer() {
@ -311,31 +311,37 @@
title: '提示',
content: '退出登录后回终止本次急救, 确认要退出登录吗?',
onOk: async () => {
const { firstAidId } = this.patientData;
if(firstAidId){
let res = await updateFirstAid({
firstAidId,
finishStatus: 1
});
const { code, data, msg } = res;
if (code === 200) {
this.setPatientData({})
this.setTimerData({});
this.setToken(undefined)
this.$router.replace('/login')
} else {
this.$message.error(msg);
}
}else{
const {
firstAidId
} = this.patientData;
if (firstAidId) {
let res = await updateFirstAid({
firstAidId,
finishStatus: 1
});
const {
code,
data,
msg
} = res;
if (code === 200) {
this.setPatientData({})
this.setTimerData({});
this.setToken(undefined)
this.$router.replace('/login')
} else {
this.$message.error(msg);
}
} else {
this.setToken(undefined)
this.$router.replace('/login')
}
this.$router.replace('/login')
}
},
onCancel() {},
});
});
}
}
}

2
src/views/Patient/components/patient-detail.vue

@ -410,7 +410,7 @@
<style lang="less" scoped>
.patient-detail {
display: flex;
height: calc(100vh - 200px);
height: calc(100vh - 180px);
overflow-y: auto;
.patient-dlist {

9
src/views/Patient/components/patient-list.vue

@ -116,9 +116,7 @@
const params = {
pageNum: this.pageNum,
pageSize: this.pageSize,
"param": {
"keywords": ""
}
param: { keyWords }
};
const res = await queryTriageList(params);
const {
@ -134,9 +132,8 @@
this.pagination.total = data.total;
this.busy = true;
if (this.pageNum == 1) {
// this.list = data?.list || [];
this.list = data?.list || [];
console.log(this.list)
this.list = [...this.list, ...(data?.list || [])];
} else {
this.list = [...this.list, ...data.list];
}
@ -243,7 +240,7 @@
<style lang="less" scoped>
//
.patient-list {
height: calc(100vh - 200px);
height: calc(100vh - 205px);
overflow-y: auto;
}

2
src/views/Patient/index.vue

@ -18,7 +18,7 @@
<patient-list ref="patientList" @change="changeComponent" :column="1"></patient-list>
</div>
<div class="patient-detail">
<patient-detail ref="patientList" :firstAidData="firstAidData" :carList="carList" :carNo="carNo"
<patient-detail ref="patientDetail" :firstAidData="firstAidData" :carList="carList" :carNo="carNo"
@change="changeComponent"></patient-detail>
</div>

125
src/views/document/index.vue

@ -23,7 +23,18 @@
</template>
<template slot="sex" slot-scope="text">
<div v-if="text == 0"></div>
<div v-if="text == 1"></div>
<div v-else-if="text == 1"></div>
</template>
<template slot="type" slot-scope="text">
<div v-if="text == 0">卒中</div>
<div v-else-if="text == 1">胸痛</div>
<div v-else-if="text == 2">创伤</div>
</template>
<template slot="firstAidStatus" slot-scope="text">
<div v-if="text == 0">创建</div>
<div v-else-if="text == 1">待审核</div>
<div v-else-if="text == 2">审核拒绝</div>
<div v-else-if="text == 3">审核通过</div>
</template>
</a-table>
</div>
@ -91,19 +102,27 @@
},
columns: [{
title: '急救编号',
width: 240,
dataIndex: 'firstAidId',
ellipsis: true,
align: 'center',
key: 'firstAidId',
// fixed: 'left'
}, {
title: '姓名',
width: 150,
width: 120,
dataIndex: 'patientName',
ellipsis: true,
align: 'center',
key: 'name',
fixed: 'left'
key: 'patientName',
// fixed: 'left'
},
{
title: '性别',
width: 120,
dataIndex: 'patientGender',
key: 'sex',
key: 'patientGender',
align: 'center',
scopedSlots: {
customRender: 'sex'
@ -114,12 +133,13 @@
dataIndex: 'patientIdCardNo',
align: 'center',
ellipsis: true,
key: 'patientIdCardNo',
width: 280
},
{
title: '联系方式',
dataIndex: 'patientPhone',
key: '2',
key: 'patientPhone',
ellipsis: true,
align: 'center',
width: 250
@ -134,11 +154,14 @@
},
{
title: '绿色通道',
dataIndex: 'address',
dataIndex: 'type',
key: '4',
ellipsis: true,
align: 'center',
width: 250
width: 250,
scopedSlots: {
customRender: 'type'
},
},
{
title: '发病时间',
@ -150,7 +173,7 @@
},
{
title: '到院时间',
dataIndex: 'JBXX-DYSJ',
dataIndex: 'JBXX-DY-TIME',
key: '6',
ellipsis: true,
align: 'center',
@ -166,7 +189,7 @@
},
{
title: '卒中医生到场时间',
dataIndex: 'JBXX-SNYSDC-TIME',
dataIndex: 'JBXX-CZYSDC-TIME',
key: '8',
align: 'center',
ellipsis: true,
@ -190,7 +213,7 @@
},
{
title: 'CT时间',
dataIndex: 'RYPG-CT-JCKS-TIME',
dataIndex: 'RYPG-CT-DD-TIME',
key: '11',
align: 'center',
ellipsis: true,
@ -198,19 +221,63 @@
},
{
title: '团注时间',
dataIndex: 'JMRS-TZSJ',
dataIndex: 'JMRS-TIME',
key: '12',
align: 'center',
ellipsis: true,
width: 280
},
{
title: '指标分析(单位/秒)',
dataIndex: 'JMRS-ZBFX',
key: '13',
align: 'center',
ellipsis: true,
width: 280
title: '指标分析',
children: [{
title: 'ODT(s)',
dataIndex: 'odt',
key: '131',
align: 'center',
ellipsis: true,
width: 100
},
{
title: 'DNT(s)',
dataIndex: 'dnt',
key: '132',
align: 'center',
ellipsis: true,
width: 100
},
{
title: 'DIT(s)',
dataIndex: 'dit',
key: '133',
align: 'center',
ellipsis: true,
width: 100
},
{
title: 'ONT(s)',
dataIndex: 'ont',
key: '134',
align: 'center',
ellipsis: true,
width: 100
},
{
title: 'DPT(s)',
dataIndex: 'dpt',
key: '135',
align: 'center',
ellipsis: true,
width: 100
},
{
title: 'PRT(s)',
dataIndex: 'prt',
key: '136',
align: 'center',
ellipsis: true,
width: 100
},
]
},
{
title: '介入治疗记录',
@ -223,18 +290,21 @@
{
title: '创建时间',
dataIndex: 'createTime',
key: '15',
key: 'createTime',
align: 'center',
ellipsis: true,
width: 280
},
{
title: '状态',
dataIndex: 'finishStatus',
dataIndex: 'firstAidStatus',
width: 200,
align: 'center',
ellipsis: true,
key: '16'
key: '16',
scopedSlots: {
customRender: 'firstAidStatus'
},
},
{
title: '备注',
@ -248,7 +318,7 @@
key: 'operation',
fixed: 'right',
align: 'center',
width: 380,
width: 320,
scopedSlots: {
customRender: 'action'
},
@ -310,8 +380,11 @@
// this.isLoading = false;
this.pagination.total = data.total;
this.dataSource = (data?.list || []).map(a => {
if(a.firstAidRecordVos){
a.firstAidRecordVos.forEach(({answer, questionCode}) => {
if (a.firstAidRecordVos) {
a.firstAidRecordVos.forEach(({
answer,
questionCode
}) => {
a[questionCode] = answer.toString()
})
}
@ -420,8 +493,8 @@
.ant-btn-link {
padding: 0 4px;
}
// .ant-table-scroll,
// .ant-table-fixed-left,
// .ant-table-fixed-right {

17
src/views/thrombolysis/components/throm-before.vue

@ -58,8 +58,8 @@
display: flex;
.throm-step {
padding: 10px;
margin-right:10px;
padding: 32px 10px 32px 12px;
margin-right: 10px;
background-color: #fff;
.ant-steps-vertical .ant-steps-item-content {
@ -150,6 +150,7 @@
border: 0.5px solid #a3acbf;
border-radius: 0.55vw;
vertical-align: middle;
&.ant-checkbox-wrapper-checked {
background: #007AFF;
color: #fff;
@ -193,11 +194,13 @@
}
}
}
.throm-report .report-timeline{
margin-left:40px;
.throm-report .report-timeline {
margin-left: 40px;
}
.ant-card-head-title{
font-size:24px;
color:#222;
.ant-card-head-title {
font-size: 24px;
color: #222;
}
</style>

4
src/views/thrombolysis/components/throm-ing.vue

@ -119,8 +119,8 @@
display: flex;
.throm-step {
padding: 10px;
margin-right: .2rem;
padding: 32px 10px 32px 12px;
margin-right: 10px;
background-color: #fff;
// .ant-steps-vertical .ant-steps-item-content {

7
src/views/thrombolysis/components/throm-interfere.vue

@ -50,13 +50,14 @@
display: flex;
.throm-step {
padding: 10px;
margin-right: .2rem;
padding: 32px 10px 32px 12px;
margin-right: 10px;
background-color: #fff;
.ant-steps-vertical .ant-steps-item-content {
min-height: 10rem;
}
.ant-steps {
height: 100%;
padding-bottom: 20px;
@ -64,7 +65,7 @@
display: flex;
flex-direction: column;
.ant-steps-item{
.ant-steps-item {
flex: none
}
}

420
src/views/thrombolysis/components/throm-report.vue

@ -1,55 +1,127 @@
<template>
<div class="throm-report">
<div class="report-container">
<a-row >
<a-row>
<a-col :span="24">
<a-card class="report-card baseInfo" title="患者信息">
<a-card class="report-card baseInfo" title="患者信息" :bodyStyle="{padding: 0}">
<a-col :span='8'>
<a-row><div class="leftTitle">姓名</div><div class="rightValue">{{patient.patientName}}</div></a-row>
<a-row><div class="leftTitle">民族</div><div class="rightValue">{{patient.patientNation || '-'}}</div></a-row>
<a-row><div class="leftTitle">诊断</div><div class="rightValue">{{patient.firstAidZlTypeString || '-'}}</div></a-row>
<a-row>
<div class="leftTitle">姓名</div>
<div class="rightValue">{{patient.patientName}}</div>
</a-row>
<a-row>
<div class="leftTitle">民族</div>
<div class="rightValue">{{patient.patientNation || '-'}}</div>
</a-row>
<a-row>
<div class="leftTitle">诊断</div>
<div class="rightValue">{{patient.firstAidZlTypeString || '-'}}</div>
</a-row>
</a-col>
<a-col :span='8' class="midItem">
<a-row><div class="leftTitle">性别</div><div class="rightValue">{{patient.patientGenderString || '-'}}</div></a-row>
<a-row><div class="leftTitle">身份证号</div><div class="rightValue">{{patient.patientIdCardNo ? utils.maskIDCard(patient.patientIdCardNo || '') : '-'}}</div></a-row>
<a-row><div class="leftTitle">发病时间</div><div class="rightValue">{{queryItemInfo('XGZL-CCWC-TIME').toString() ||'-'}}</div></a-row>
<a-row>
<div class="leftTitle">性别</div>
<div class="rightValue">{{patient.patientGenderString || '-'}}</div>
</a-row>
<a-row>
<div class="leftTitle">身份证号</div>
<div class="rightValue">
{{patient.patientIdCardNo ? utils.maskIDCard(patient.patientIdCardNo || '') : '-'}}
</div>
</a-row>
<a-row>
<div class="leftTitle">发病时间</div>
<div class="rightValue">{{queryItemInfo('XGZL-CCWC-TIME').toString() ||'-'}}</div>
</a-row>
</a-col>
<a-col :span='8'>
<a-row><div class="leftTitle">年龄</div><div class="rightValue">{{patient.patientAge || '-'}}</div></a-row>
<a-row><div class="leftTitle">联系方式</div><div class="rightValue">{{patient.patientContract || '-'}}</div></a-row>
<a-row>
<div class="leftTitle">年龄</div>
<div class="rightValue">{{patient.patientAge || '-'}}</div>
</a-row>
<a-row>
<div class="leftTitle">联系方式</div>
<div class="rightValue">{{patient.patientContract || '-'}}</div>
</a-row>
</a-col>
</a-card>
</a-col>
<a-col :span="24">
<a-col :span="24" v-if="false">
<a-card class="report-card baseInfo" title="病情评估">
<a-col :span='8'>
<a-row><div class="leftTitle">入院mRS评分</div><div class="rightValue">{{ getFirstInfo['RYPG-MRS'] || '暂无' }}</div></a-row>
<a-row><div class="leftTitle">入院NIHSS评分</div><div class="rightValue">{{ getFirstInfo['RYPG-NIHSS'] || '暂无' }}</div></a-row>
<a-row><div class="leftTitle">舒张压/收缩压</div><div class="rightValue">
<span>{{getFirstInfo['RYPG-DIASTOLIC-PRESSURE'] ? (getFirstInfo['RYPG-DIASTOLIC-PRESSURE'] + 'mmHg') : '暂无'}}</span>
<a-row>
<div class="leftTitle">入院mRS评分</div>
<div class="rightValue">{{ getFirstInfo['RYPG-MRS'] || '暂无' }}</div>
</a-row>
<a-row>
<div class="leftTitle">入院NIHSS评分</div>
<div class="rightValue">{{ getFirstInfo['RYPG-NIHSS'] || '暂无' }}</div>
</a-row>
<a-row>
<div class="leftTitle">舒张压/收缩压</div>
<div class="rightValue">
<span>{{getFirstInfo['RYPG-DIASTOLIC-PRESSURE'] ? (getFirstInfo['RYPG-DIASTOLIC-PRESSURE'] + 'mmHg') : '暂无'}}</span>
<span> / </span>
<span>{{getFirstInfo['RYPG-SYSTOLIC-PRESSURE'] ? (getFirstInfo['RYPG-SYSTOLIC-PRESSURE'] + 'mmHg') : '暂无'}}</span>
</div></a-row>
<a-row><div class="leftTitle">选用平车</div><div class="rightValue">{{patient.carNo || '-'}}</div></a-row>
<a-row><div class="leftTitle">绿道状态</div><div class="rightValue"><span class="report-treat-rowtext"><a-switch checked></a-switch></span></div></a-row>
</div>
</a-row>
<a-row>
<div class="leftTitle">选用平车</div>
<div class="rightValue">{{patient.carNo || '-'}}</div>
</a-row>
<a-row>
<div class="leftTitle">绿道状态</div>
<div class="rightValue"><span class="report-treat-rowtext"><a-switch
checked></a-switch></span></div>
</a-row>
</a-col>
<a-col :span='8' class="midItem">
<a-row><div class="leftTitle">身高</div><div class="rightValue">{{ getFirstInfo['RYPG-HEIGHT'] ? getFirstInfo['RYPG-HEIGHT'] + 'CM' : '暂无' }}</div></a-row>
<a-row><div class="leftTitle">体重</div><div class="rightValue">{{ getFirstInfo['RYPG-WEIGHT'] ? getFirstInfo['RYPG-WEIGHT'] + 'KG' : '暂无' }}</div></a-row>
<a-row><div class="leftTitle">BMI</div><div class="rightValue">{{ getFirstInfo['RYPG-BMI'] || '暂无' }}</div></a-row>
<a-row><div class="leftTitle">血糖</div><div class="rightValue">{{ getFirstInfo['RYPG-PULSE'] ? getFirstInfo['RYPG-PULSE'] + '次/分' : '暂无' }}</div></a-row>
<a-row>
<div class="leftTitle">身高</div>
<div class="rightValue">
{{ getFirstInfo['RYPG-HEIGHT'] ? getFirstInfo['RYPG-HEIGHT'] + 'CM' : '暂无' }}
</div>
</a-row>
<a-row>
<div class="leftTitle">体重</div>
<div class="rightValue">
{{ getFirstInfo['RYPG-WEIGHT'] ? getFirstInfo['RYPG-WEIGHT'] + 'KG' : '暂无' }}
</div>
</a-row>
<a-row>
<div class="leftTitle">BMI</div>
<div class="rightValue">{{ getFirstInfo['RYPG-BMI'] || '暂无' }}</div>
</a-row>
<a-row>
<div class="leftTitle">血糖</div>
<div class="rightValue">
{{ getFirstInfo['RYPG-PULSE'] ? getFirstInfo['RYPG-PULSE'] + '次/分' : '暂无' }}
</div>
</a-row>
</a-col>
<a-col :span='8'>
<a-row><div class="leftTitle">选用平车</div><div class="rightValue">{{patient.carNo || '-'}}</div></a-row>
<a-row><div class="leftTitle">溶栓药物</div><div class="rightValue">: {{getFirstInfo['JMRS-RSYW'] || '暂无'}}</div></a-row>
<a-row><div class="leftTitle">静滴剂量</div><div class="rightValue">: {{getFirstInfo['JMRS-JDJL'] || '暂无'}}</div></a-row>
<a-row><div class="leftTitle">团注剂量</div><div class="rightValue">: {{getFirstInfo['JMRS-TZJL'] || '暂无'}}</div></a-row>
<a-row>
<div class="leftTitle">选用平车</div>
<div class="rightValue">{{patient.carNo || '-'}}</div>
</a-row>
<a-row>
<div class="leftTitle">溶栓药物</div>
<div class="rightValue">: {{getFirstInfo['JMRS-RSYW'] || '暂无'}}</div>
</a-row>
<a-row>
<div class="leftTitle">静滴剂量</div>
<div class="rightValue">: {{getFirstInfo['JMRS-JDJL'] || '暂无'}}</div>
</a-row>
<a-row>
<div class="leftTitle">团注剂量</div>
<div class="rightValue">: {{getFirstInfo['JMRS-TZJL'] || '暂无'}}</div>
</a-row>
</a-col>
</a-card>
</a-col>
<a-col :span="24">
<a-col :span="24" v-if="false">
<a-card class="report-card" title="溶栓状态">
<div class="report-timeline">
<a-steps progress-dot :current="currentIndex" direction="vertical">
@ -70,10 +142,119 @@
</div>
</a-card>
</a-col>
<a-col :span="24">
<a-card class="report-card" title="急诊溶栓记录">
<a-card class="report-card" title="DNT时间表" :bodyStyle="{padding: '0 32px'}">
<a slot="extra" href="javascript:;" @click="handleExportDntPdf">导出</a>
<div class="doc-ct-content">
<div class="record-content">
<table border class="report-rsgcb">
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<!-- <tr>
<td colspan="2">姓名{{patient.patientName}}</td>
<td colspan="3">性别{{patient.patientGenderString}}</td>
<td colspan="1">年龄{{patient.patientAge}}</td>
<td colspan="2">血糖(BS){{queryItemInfo('RYPG-BLOOD-SUGAR').toString()}}</td>
<td colspan="2">血压(BP){{queryItemInfo('JMRS-Q-SYSTOLIC-PRESSURE').toString()}}
</td>
</tr>
<tr>
<td colspan="3">一线</td>
<td colspan="3">二线</td>
<td colspan="4">NIHSS{{queryItemInfo('JMRS-Q-NIHSS').toString()}}</td>
</tr> -->
<tr>
<td colspan="1">溶栓流程</td>
<td colspan="1">具体时间</td>
<td colspan="1">溶栓流程</td>
<td colspan="1">具体时间</td>
</tr>
<tr>
<td colspan="1">发病时间</td>
<td colspan="1">{{queryItemInfo('JBXX-FBSJ').toString()}}</td>
<td colspan="1">到达CT时间</td>
<td colspan="1">{{queryItemInfo('RYPG-CT-DD-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">到院时间</td>
<td colspan="1">{{queryItemInfo('JBXX-FBSJ').toString()}}</td>
<td colspan="1">CT检查开始时间</td>
<td colspan="1">{{queryItemInfo('RYPG-CT-JCKS-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">启动绿道时间</td>
<td colspan="1">{{queryItemInfo('RYPG-GR-TIME').toString()}}</td>
<td colspan="1">CT检查结束时间</td>
<td colspan="1">{{queryItemInfo('RYPG-CT-JCWB-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">呼叫时间</td>
<td colspan="1">{{queryItemInfo('JBXX-TZCZYS-TIME').toString()}}</td>
<td colspan="1">到达核磁时间</td>
<td colspan="1">{{queryItemInfo('JMRS-HC-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">一线到场时间</td>
<td colspan="1">{{queryItemInfo('JBXX-CZYSDC-TIME').toString()}}</td>
<td colspan="1">二线医生到场时间</td>
<td colspan="1">{{queryItemInfo('JBXX-SNYSDC-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">采血开始时间</td>
<td colspan="1">{{queryItemInfo('RYPG-BLOOD-TIME').toString()}}</td>
<td colspan="1">谈话开始时间</td>
<td colspan="1">{{queryItemInfo('JMRS-TH-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">血样报告时间</td>
<td colspan="1">{{queryItemInfo('RYPG-BLOOD-REPORT-TIME').toString()}}</td>
<td colspan="1">心电开始时间</td>
<td colspan="1">{{queryItemInfo('RYPG-ECG-TIME').toString()}}</td>
</tr>
<!-- <tr>
<td colspan="2">离开CT时间</td>
<td colspan="3">{{queryItemInfo('RYPG-CT-LK-TIME').toString()}}</td>
<td colspan="2"></td>
<td colspan="3"></td>
</tr> -->
<tr>
<td colspan="1">签署知情同意书时间</td>
<td colspan="1">{{queryItemInfo('JMRS-ZQTY-TIME').toString()}}</td>
<td colspan="1">到达溶栓区时间</td>
<td colspan="1">{{queryItemInfo('JMRS-RSQ-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">静脉溶栓开始时间</td>
<td colspan="1">{{queryItemInfo('JMRS-TIME').toString()}}</td>
<td colspan="1">静脉溶栓结束时间</td>
<td colspan="1">{{queryItemInfo('JMRS-END-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">进入介入室时间</td>
<td colspan="1">{{queryItemInfo('JMRS-DDJRS').toString()}}</td>
<td colspan="1">置鞘时间</td>
<td colspan="1">{{queryItemInfo('XGZL-CCWC-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="1">血管再通时间</td>
<td colspan="1">{{queryItemInfo('XGZL-SH-SCXGZTSJ').toString()}}</td>
<td colspan="1">进入病房时间</td>
<td colspan="1">{{queryItemInfo('JMRS-DDBF').toString()}}</td>
</tr>
</table>
</div>
</div>
</a-card>
</a-col>
<a-col :span="24">
<a-card class="report-card" title="急诊溶栓记录" :bodyStyle="{padding: '0 32px'}">
<a slot="extra" id="exportFirst" href="JavaScript:;" @click="handleExportRsPdf">导出</a>
<div class="report-card-content" style="min-height: 300px;">
<div class="report-card-content" style="min-height: 100px;">
<div class="record-content" v-html="recordData"></div>
<div class="emtpy" v-if="!recordData">
<a-empty :image="emptyImage" description="暂无溶栓记录" />
@ -82,7 +263,7 @@
</a-card>
</a-col>
<a-col :span="24">
<a-card class="report-card" title="溶栓观察表">
<a-card class="report-card" title="溶栓观察表" :bodyStyle="{padding: '0 32px'}">
<a slot="extra" href="javascript:;" @click="handleExportRsgcbPdf">导出</a>
<div class="doc-ct-content">
<div>
@ -189,111 +370,9 @@
</a-card>
</a-col>
<a-col :span="24">
<a-card class="report-card" title="DNT时间表">
<a slot="extra" href="javascript:;" @click="handleExportDntPdf">导出</a>
<div class="doc-ct-content">
<div class="record-content">
<table border class="report-rsgcb">
<!-- <tr>
<td colspan="2">姓名{{patient.patientName}}</td>
<td colspan="3">性别{{patient.patientGenderString}}</td>
<td colspan="1">年龄{{patient.patientAge}}</td>
<td colspan="2">血糖(BS){{queryItemInfo('RYPG-BLOOD-SUGAR').toString()}}</td>
<td colspan="2">血压(BP){{queryItemInfo('JMRS-Q-SYSTOLIC-PRESSURE').toString()}}
</td>
</tr>
<tr>
<td colspan="3">一线</td>
<td colspan="3">二线</td>
<td colspan="4">NIHSS{{queryItemInfo('JMRS-Q-NIHSS').toString()}}</td>
</tr> -->
<tr>
<td colspan="2">溶栓流程</td>
<td colspan="3">具体时间</td>
<td colspan="2">溶栓流程</td>
<td colspan="3">具体时间</td>
</tr>
<tr>
<td colspan="2">发病时间</td>
<td colspan="3">{{queryItemInfo('JBXX-FBSJ').toString()}}</td>
<td colspan="2">到达CT时间</td>
<td colspan="3">{{queryItemInfo('RYPG-CT-DD-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">到院时间</td>
<td colspan="3">{{queryItemInfo('JBXX-FBSJ').toString()}}</td>
<td colspan="2">CT检查开始时间</td>
<td colspan="3">{{queryItemInfo('RYPG-CT-JCKS-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">启动绿道时间</td>
<td colspan="3">{{queryItemInfo('RYPG-GR-TIME').toString()}}</td>
<td colspan="2">CT检查结束时间</td>
<td colspan="3">{{queryItemInfo('RYPG-CT-JCWB-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">呼叫时间</td>
<td colspan="3">{{queryItemInfo('JBXX-TZCZYS-TIME').toString()}}</td>
<td colspan="2">到达核磁时间</td>
<td colspan="3">{{queryItemInfo('JMRS-HC-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">一线到场时间</td>
<td colspan="3">{{queryItemInfo('JBXX-CZYSDC-TIME').toString()}}</td>
<td colspan="2">二线医生到场时间</td>
<td colspan="3">{{queryItemInfo('JBXX-SNYSDC-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">采血开始时间</td>
<td colspan="3">{{queryItemInfo('RYPG-BLOOD-TIME').toString()}}</td>
<td colspan="2">谈话开始时间</td>
<td colspan="3">{{queryItemInfo('JMRS-TH-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">血样报告时间</td>
<td colspan="3">{{queryItemInfo('RYPG-BLOOD-REPORT-TIME').toString()}}</td>
<td colspan="2">心电开始时间</td>
<td colspan="3">{{queryItemInfo('RYPG-ECG-TIME').toString()}}</td>
</tr>
<!-- <tr>
<td colspan="2">离开CT时间</td>
<td colspan="3">{{queryItemInfo('RYPG-CT-LK-TIME').toString()}}</td>
<td colspan="2"></td>
<td colspan="3"></td>
</tr> -->
<tr>
<td colspan="2">签署知情同意书时间</td>
<td colspan="3">{{queryItemInfo('JMRS-ZQTY-TIME').toString()}}</td>
<td colspan="2">到达溶栓区时间</td>
<td colspan="3">{{queryItemInfo('JMRS-RSQ-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">静脉溶栓开始时间</td>
<td colspan="3">{{queryItemInfo('JMRS-TIME').toString()}}</td>
<td colspan="2">静脉溶栓结束时间</td>
<td colspan="3">{{queryItemInfo('JMRS-END-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">进入介入室时间</td>
<td colspan="3">{{queryItemInfo('JMRS-DDJRS').toString()}}</td>
<td colspan="2">置鞘时间</td>
<td colspan="3">{{queryItemInfo('XGZL-CCWC-TIME').toString()}}</td>
</tr>
<tr>
<td colspan="2">血管再通时间</td>
<td colspan="3">{{queryItemInfo('XGZL-SH-SCXGZTSJ').toString()}}</td>
<td colspan="2">进入病房时间</td>
<td colspan="3">{{queryItemInfo('JMRS-DDBF').toString()}}</td>
</tr>
</table>
</div>
</div>
</a-card>
</a-col>
<a-col :span="24">
<a-card class="report-card" title="介入手术记录">
<a-card class="report-card" title="介入手术记录" :bodyStyle="{padding: '0 32px'}">
<a slot="extra" href="javascript:;" @click="handleExportJrPdf">导出</a>
<div class="doc-ct-content" style="min-height: 300px;">
<div class="doc-ct-content" style="min-height: 100px;">
<div class="record-content" v-html="operaData"></div>
<div class="emtpy" v-if="!operaData">
<a-empty :image="emptyImage" description="暂无手术记录" />
@ -304,14 +383,14 @@
</a-row>
</div>
<div style="background-color: #fff;padding-bottom: 12px;border-top: 1px solid #eee;">
<div class="throm-common-button" >
<div class="throm-common-button">
<a-button :disabled="writeAble" class="" type="primary" size="large" block
@click="handleExportAll">打印</a-button>
<!-- <a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="onSubmit">导出</a-button> -->
</div>
</div>
<throm-report-dnt ref="dnt"></throm-report-dnt>
<throm-report-record ref="record"></throm-report-record>
<throm-report-observe ref="observe"></throm-report-observe>
@ -912,6 +991,7 @@
.report-timeline {
overflow-y: auto;
.ant-steps {
height: 100%;
padding-bottom: 20px;
@ -944,40 +1024,44 @@
}
}
}
.ant-card-bordered {
border: none;
.ant-card-head {
border-bottom: none;
}
border: none;
.ant-card-head {
border-bottom: none;
}
.baseInfo{
line-height:32px;
.ant-col-8{
padding-left:30px;
padding-right:30px;
}
.leftTitle{
float:left;
font-size:18px;
color:#888888;
}
.rightValue{
float:right;
font-size:18px;
color:#222;
}
.midItem{
border-left:1px solid #eee;
border-right:1px solid #eee;
}
}
.baseInfo {
line-height: 32px;
.ant-col-8 {
padding-left: 30px;
padding-right: 30px;
}
.report-rsgcb td{
font-size:18px;
color:#3D3D3D;
.leftTitle {
float: left;
font-size: 18px;
color: #888888;
}
.rightValue {
float: right;
font-size: 18px;
color: #222;
}
.midItem {
border-left: 1px solid #eee;
border-right: 1px solid #eee;
}
}
.report-rsgcb td {
font-size: 18px;
color: #3D3D3D;
}
}
</style>

9
src/views/thrombolysis/components/throm-result.vue

@ -58,9 +58,10 @@
<style lang="less">
.throm-result {
display: flex;
.throm-step {
padding: 10px;
margin-right: .2rem;
.throm-step {
padding: 32px 10px 32px 12px;
margin-right: 10px;
background-color: #fff;
.ant-steps-vertical .ant-steps-item-content {
@ -109,7 +110,7 @@
margin-bottom: .5rem;
padding: 12px;
border-radius: 4px;
height:60px;
height: 60px;
}
.ant-radio-button-wrapper {

Loading…
Cancel
Save