Browse Source

0225

master
领悟 5 months ago
parent
commit
e13dafa443
  1. 3
      public/index.html
  2. 2
      src/App.vue
  3. 41
      src/api/index.js
  4. 10
      src/assets/less/common.less
  5. 8
      src/layouts/BasicLayout.less
  6. 5
      src/layouts/BasicLayout.vue
  7. 2
      src/views/Patient/components/patient-detail.vue
  8. 27
      src/views/document/components/ct.vue
  9. 23
      src/views/document/components/detail.vue
  10. 2
      src/views/document/components/inspect.vue
  11. 3
      src/views/document/components/report.vue
  12. 33
      src/views/document/index.vue
  13. 1001
      src/views/statistics/index - 副本.vue
  14. 575
      src/views/statistics/index.vue
  15. 11
      src/views/thrombolysis/components/throm-before.vue
  16. 67
      src/views/thrombolysis/components/throm-before0.vue
  17. 187
      src/views/thrombolysis/components/throm-before1.vue
  18. 4
      src/views/thrombolysis/components/throm-before2.vue
  19. 34
      src/views/thrombolysis/components/throm-before3.vue
  20. 12
      src/views/thrombolysis/components/throm-before4.vue
  21. 4
      src/views/thrombolysis/components/throm-ing-date.vue
  22. 10
      src/views/thrombolysis/components/throm-ing-min.vue
  23. 10
      src/views/thrombolysis/components/throm-ing-reactions.vue
  24. 41
      src/views/thrombolysis/components/throm-ing-record.vue
  25. 5
      src/views/thrombolysis/components/throm-ing-selDrug.vue
  26. 28
      src/views/thrombolysis/components/throm-ing.vue
  27. 25
      src/views/thrombolysis/components/throm-interfere-image-dcm.vue
  28. 2
      src/views/thrombolysis/components/throm-interfere-image.vue
  29. 12
      src/views/thrombolysis/components/throm-interfere-informed.vue
  30. 10
      src/views/thrombolysis/components/throm-interfere-surgical.vue
  31. 11
      src/views/thrombolysis/components/throm-interfere.vue
  32. 116
      src/views/thrombolysis/components/throm-report.vue
  33. 4
      src/views/thrombolysis/components/throm-result-baseInfo.vue
  34. 4
      src/views/thrombolysis/components/throm-result-firstInfo.vue
  35. 4
      src/views/thrombolysis/components/throm-result.vue

3
public/index.html

@ -15,7 +15,8 @@
<body> <body>
<noscript> <noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript
enabled.
Please enable it to continue.</strong> Please enable it to continue.</strong>
</noscript> </noscript>
<div id="app"></div> <div id="app"></div>

2
src/App.vue

@ -145,7 +145,7 @@
firstAidId firstAidId
} = this.patientData; } = this.patientData;
if (!firstAidId) return; if (!firstAidId) return;
// this.queryMessage(); this.queryMessage();
await this.handMessageQuery(); await this.handMessageQuery();
this.request = 0; this.request = 0;

41
src/api/index.js

@ -307,6 +307,31 @@ export const queryPatient = (params) =>
axios.post(`${proxyUrl1}/home/queryPatient`, { axios.post(`${proxyUrl1}/home/queryPatient`, {
...params ...params
}); });
export const queryDitResult = (params) =>
axios.post(`${proxyUrl1}/home/queryDitResult`, {
...params
});
export const queryOntResult = (params) =>
axios.post(`${proxyUrl1}/home/queryOntResult`, {
...params
});
export const queryOptResult = (params) =>
axios.post(`${proxyUrl1}/home/queryOptResult`, {
...params
});
export const queryXgzlBfzResult = (params) =>
axios.post(`${proxyUrl1}/home/queryXgzlBfzResult`, {
...params
});
export const queryXgzlLv = (params) =>
axios.post(`${proxyUrl1}/home/queryXgzlLv`, {
...params
});
// 介入手术记录/总报告/DNT时间表 // 介入手术记录/总报告/DNT时间表
export const operationLog = (params) => export const operationLog = (params) =>
axios.post(`${proxyUrl1}/interfere/operationLog`, { axios.post(`${proxyUrl1}/interfere/operationLog`, {
@ -332,3 +357,19 @@ export const exportRsPdf = (params) =>
axios.post(`${proxyUrl1}/admin/export/exportRsPdf`, { axios.post(`${proxyUrl1}/admin/export/exportRsPdf`, {
...params ...params
}); });
export const exportDntPdf = (params) =>
axios.post(`${proxyUrl1}/admin/export/exportDntPdf`, {
...params
});
export const exportRsgcbPdf = (params) =>
axios.post(`${proxyUrl1}/admin/export/exportRsgcbPdf`, {
...params
});
export const exportAll = (params) =>
axios.post(`${proxyUrl1}/admin/export/exportAll`, {
...params
});
export const exportJrPdf = (params) =>
axios.post(`${proxyUrl1}/admin/export/exportJrPdf`, {
...params
});

10
src/assets/less/common.less

@ -124,6 +124,16 @@
margin-bottom: 12px; margin-bottom: 12px;
border-radius: 20px; border-radius: 20px;
} }
.throm-common-button {
width: 60% !important;
margin: 0 auto;
// margin-bottom: 12px;
border-radius: 20px;
.ant-btn {
margin-top: 12px;
}
}
.common-slider{ .common-slider{
width: 100%; width: 100%;
display: flex; display: flex;

8
src/layouts/BasicLayout.less

@ -130,6 +130,10 @@
.action{ .action{
padding: 0 .2rem; padding: 0 .2rem;
font-weight: bold; font-weight: bold;
color: red;
display: flex;
flex-direction: column;
align-items: center;
} }
} }
@ -149,8 +153,8 @@
position: relative; position: relative;
.global-layout-content{ .global-layout-content{
height: calc(100vh - 66px); height: calc(100vh - 56px);
// overflow-y: auto; overflow-y: hidden;
padding: 10px; padding: 10px;
position: relative; position: relative;
} }

5
src/layouts/BasicLayout.vue

@ -48,7 +48,7 @@
) )
</div> </div>
<div class="patient-action"> <div class="patient-action">
<div class="action" @click="showDrawer"><a-icon type="logout" /></div> <div class="action" @click="showDrawer"><a-icon type="minus-circle" /></div>
<!-- <div class="action"><a-icon type="pause-circle" /></div> --> <!-- <div class="action"><a-icon type="pause-circle" /></div> -->
</div> </div>
</template> </template>
@ -59,6 +59,7 @@
<router-view /> <router-view />
<a-drawer placement="bottom" closable :visible="termVisible" @close="onTermClose" <a-drawer placement="bottom" closable :visible="termVisible" @close="onTermClose"
:get-container="false" :wrap-style="{ position: 'absolute' }"> :get-container="false" :wrap-style="{ position: 'absolute' }">
<div v-if="termVisible">
<div style="text-align: center;line-height: 3rem;font-weight: bold;font-size: 1.5rem;"> <div style="text-align: center;line-height: 3rem;font-weight: bold;font-size: 1.5rem;">
退出急救 退出急救
</div> </div>
@ -66,6 +67,8 @@
<div style="border-bottom: 1px solid #eee;" @click="handleTermin(1)">终止急救</div> <div style="border-bottom: 1px solid #eee;" @click="handleTermin(1)">终止急救</div>
<div @click="handleTermin(0)">暂停急救</div> <div @click="handleTermin(0)">暂停急救</div>
</div> </div>
</div>
</a-drawer> </a-drawer>
</div> </div>

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

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

27
src/views/document/components/ct.vue

@ -1,21 +1,25 @@
<template> <template>
<a-modal class="doc-ct" width="85%" destroyOnClose :footer="null" v-model="visible" title="CT影像"> <a-modal class="doc-ct" width="85%" destroyOnClose :footer="null" v-model="visible" title="CT影像">
<div class="doc-ct-content"> <div class="doc-ct-content">
<div v-if="dataSource.length"> <!-- <div v-if="dataSource.length">
<div v-for="item in dataSource"> <div v-for="item in dataSource">
{{item.dcmPath}} {{item.dcmPath}}
</div> </div>
</div> </div>
<div class="emtpy" v-else> <div class="emtpy" v-else>
<a-empty :image="emptyImage" description="未检测到影像信息" /> <a-empty :image="emptyImage" description="未检测到影像信息" />
</div> </div> -->
<throm-interfere-image-dcm :firstAidId="firstAidId"></throm-interfere-image-dcm>
</div> </div>
</a-modal> </a-modal>
</template> </template>
<script> <script>
import emptyImage from '@/assets/images/slice/empty.png' import emptyImage from '@/assets/images/slice/empty.png'
import {getCtInfoPath} from 'api' import ThromInterfereImageDcm from '@/views/thrombolysis/components/throm-interfere-image-dcm.vue'
import {
getCtInfoPath
} from 'api'
export default { export default {
name: 'DocCt', name: 'DocCt',
data() { data() {
@ -23,13 +27,22 @@
emptyImage, emptyImage,
visible: false, visible: false,
dataSource: [], dataSource: [],
firstAidId: '',
} }
}, },
components: {
ThromInterfereImageDcm
},
methods: { methods: {
async open({firstAidId}) { async open({
firstAidId
}) {
this.firstAidId = firstAidId
this.visible = true this.visible = true
const res = await getCtInfoPath({firstAidId}) // const res = await getCtInfoPath({
this.dataSource = res.data?.fileDtoList || [] // firstAidId
// })
// this.dataSource = res.data?.fileDtoList || []
} }
} }
} }
@ -38,7 +51,7 @@
<style lang="less" scoped> <style lang="less" scoped>
.doc-ct { .doc-ct {
.doc-ct-content { .doc-ct-content {
height: calc(100vh - 68px); height: calc(100vh - 100px);
overflow-y: auto; overflow-y: auto;
padding: 10px; padding: 10px;
} }

23
src/views/document/components/detail.vue

@ -1,8 +1,8 @@
<template> <template>
<a-modal class="" width="80%" :maskClosable="false" destroyOnClose v-model="visible" :title="title" :footer="null" <a-modal class="doc-detail" width="85%" :maskClosable="false" destroyOnClose v-model="visible" :title="title" :footer="null"
@cancel="close"> @cancel="close">
<a-card :tab-list="tabList" :active-tab-key="activeKey" @tabChange="key => onTabChange(key)"> <a-card :tab-list="tabList" :active-tab-key="activeKey" @tabChange="key => onTabChange(key)">
<div style="height: calc(100vh - 25vw); width: 100%; overflow-y: auto;"> <div class="doc-detail-content" >
<throm-result-baseInfo v-if="activeKey == 'base'" :patientId="patientId"></throm-result-baseInfo> <throm-result-baseInfo v-if="activeKey == 'base'" :patientId="patientId"></throm-result-baseInfo>
<throm-result-firstInfo v-else-if="activeKey == 'first'" :patientId="patientId"></throm-result-firstInfo> <throm-result-firstInfo v-else-if="activeKey == 'first'" :patientId="patientId"></throm-result-firstInfo>
</div> </div>
@ -60,5 +60,22 @@
} }
</script> </script>
<style> <style lang="less" scoped>
.doc-detail {
.doc-detail-content {
width: 100%;
height: calc(100vh - 205px);
overflow-x: hidden;
overflow-y: auto;
}
}
</style>
<style lang="less">
.doc-detail{
.ant-modal-wrap .ant-modal .ant-modal-body{
padding: 0 !important;
}
}
</style> </style>

2
src/views/document/components/inspect.vue

@ -108,7 +108,7 @@
<style lang="less" scoped> <style lang="less" scoped>
.doc-inspect { .doc-inspect {
.doc-inspect-content { .doc-inspect-content {
height: calc(100vh - 68px); height: calc(100vh - 100px);
overflow-y: auto; overflow-y: auto;
padding: 10px; padding: 10px;
} }

3
src/views/document/components/report.vue

@ -40,7 +40,8 @@
<style lang="less" scoped> <style lang="less" scoped>
.doc-report { .doc-report {
.doc-report-content { .doc-report-content {
height: calc(100vh - 68px); height: calc(100vh - 100px);
overflow-x: hidden;
overflow-y: auto; overflow-y: auto;
padding: 10px; padding: 10px;
} }

33
src/views/document/index.vue

@ -1,18 +1,11 @@
<template> <template>
<div class="document"> <div class="document">
<!-- <div class="doc-search">
<a-input placeholder="请输入患者姓名 (支持拼音、首拼、关键字)" style="width: 100%" size="large" v-model="searchVal"
@pressEnter="onSearch" allowClear>
<a-icon slot="prefix" type="search" @click="onSearch" />
</a-input>
</div> -->
<div class="doc-list"> <div class="doc-list">
<div class="doc-list-action"> <div class="doc-list-action">
<div class="doc-list-title"> <div class="doc-list-title">
全部患者 全部患者
</div> </div>
<div class="doc-list-btns"> <div class="doc-list-btns">
<!-- <a-button type="primary" icon="plus" @click="goCreate">新建患者</a-button> -->
<a-input placeholder="请输入患者姓名 (支持拼音、首拼、关键字)" style="width: 34vw" size="large" v-model="searchVal" <a-input placeholder="请输入患者姓名 (支持拼音、首拼、关键字)" style="width: 34vw" size="large" v-model="searchVal"
@pressEnter="onSearch(1)" allowClear> @pressEnter="onSearch(1)" allowClear>
<a-icon slot="prefix" type="search" @click="onSearch(1)" /> <a-icon slot="prefix" type="search" @click="onSearch(1)" />
@ -20,7 +13,7 @@
</div> </div>
</div> </div>
<div class="doc-list-table"> <div class="doc-list-table">
<a-table :columns="columns" :data-source="dataSource" :scroll="{ y: 720, x: 1000 }" <a-table :columns="columns" :data-source="dataSource" :scroll="{ y: 700, x: 800 }"
:locale="{ emptyText: '暂无数据'}" rowKey="firstAidId" size="middle" :pagination="pagination"> :locale="{ emptyText: '暂无数据'}" rowKey="firstAidId" size="middle" :pagination="pagination">
<template slot="action" slot-scope="text, row"> <template slot="action" slot-scope="text, row">
<a-button type="link" @click="editReport(row, 'patientDetail')">详情</a-button> <a-button type="link" @click="editReport(row, 'patientDetail')">详情</a-button>
@ -79,8 +72,14 @@
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
pagination: { pagination: {
onChange: (page) => { onChange: (page, pageSize) => {
this.pageNum = page; this.pageNum = page;
this.pageSize = pageSize
this.getData();
},
onShowSizeChange: (current, size) => {
this.pageNum = current;
this.pageSize = size
this.getData(); this.getData();
}, },
pageSize: 10, pageSize: 10,
@ -93,7 +92,7 @@
}, },
columns: [{ columns: [{
title: '姓名', title: '姓名',
width: 100, width: 120,
dataIndex: 'patientName', dataIndex: 'patientName',
key: 'name', key: 'name',
fixed: 'left' fixed: 'left'
@ -112,7 +111,7 @@
title: '身份证号', title: '身份证号',
dataIndex: 'patientIdCardNo', dataIndex: 'patientIdCardNo',
key: '1', key: '1',
width: 238 width: 248
}, },
{ {
title: '联系方式', title: '联系方式',
@ -216,7 +215,7 @@
{ {
title: '备注', title: '备注',
dataIndex: 'remark', dataIndex: 'remark',
width: 160, width: 500,
key: '17' key: '17'
}, },
{ {
@ -345,9 +344,16 @@
<style lang="less" scoped> <style lang="less" scoped>
.document { .document {
height: 100%;
overflow-y: auto;
.doc-search {} .doc-search {}
.doc-list { .doc-list {
height: 100%;
display: flex;
flex-direction: column;
.doc-list-action { .doc-list-action {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -365,8 +371,11 @@
} }
.doc-list-table { .doc-list-table {
flex: 1;
overflow-y: auto;
background-color: #fff; background-color: #fff;
padding: 10px; padding: 10px;
} }
} }

1001
src/views/statistics/index - 副本.vue

File diff suppressed because it is too large

575
src/views/statistics/index.vue

@ -11,7 +11,7 @@
<a-radio-group v-model="queryParams1.timeType" @change="typeChange($event, 'queryParams1')"> <a-radio-group v-model="queryParams1.timeType" @change="typeChange($event, 'queryParams1')">
<a-radio-button value="0"></a-radio-button> <a-radio-button value="0"></a-radio-button>
<a-radio-button value="1"></a-radio-button> <a-radio-button value="1"></a-radio-button>
<a-radio-button value="2"></a-radio-button> <!-- <a-radio-button value="2"></a-radio-button> -->
<a-radio-button value="3"></a-radio-button> <a-radio-button value="3"></a-radio-button>
</a-radio-group> </a-radio-group>
<a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']" <a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']"
@ -29,6 +29,44 @@
</a-row> </a-row>
</div> </div>
</div> </div>
<div class="sta-row">
<div class="sta-row-head">
<div class="sta-row-title">
<img src="@/assets/images/slice/title-line.png" alt="" />
<span class="sta-row-text">指标</span>
</div>
<div class="sta-row-filter">
<a-radio-group v-model="queryParams4.timeType" @change="typeChange($event, 'queryParams4')">
<a-radio-button value="0"></a-radio-button>
<a-radio-button value="1"></a-radio-button>
<!-- <a-radio-button value="2"></a-radio-button> -->
<a-radio-button value="3"></a-radio-button>
</a-radio-group>
<a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']"
separator="至" @change="dateChange($event, 'queryParams4')" />
</div>
</div>
<div class="sta-row-echart">
<a-row :gutter="[16,16]">
<a-col :span="12">
<div class="echarts-box" ref="zbboxlt"></div>
</a-col>
<a-col :span="12">
<div class="echarts-box" ref="zbboxrt"></div>
</a-col>
<a-col :span="12">
<div class="echarts-box" ref="zbboxlb"></div>
</a-col>
<a-col :span="12">
<div class="echarts-box" ref="zbboxrb"></div>
</a-col>
<a-col :span="12">
<div class="echarts-box" ref="zbboxlbb"></div>
</a-col>
</a-row>
</div>
</div>
<div class="sta-row"> <div class="sta-row">
<div class="sta-row-head"> <div class="sta-row-head">
<div class="sta-row-title"> <div class="sta-row-title">
@ -39,7 +77,7 @@
<a-radio-group v-model="queryParams2.timeType" @change="typeChange($event, 'queryParams2')"> <a-radio-group v-model="queryParams2.timeType" @change="typeChange($event, 'queryParams2')">
<a-radio-button value="0"></a-radio-button> <a-radio-button value="0"></a-radio-button>
<a-radio-button value="1"></a-radio-button> <a-radio-button value="1"></a-radio-button>
<a-radio-button value="2"></a-radio-button> <!-- <a-radio-button value="2"></a-radio-button> -->
<a-radio-button value="3"></a-radio-button> <a-radio-button value="3"></a-radio-button>
</a-radio-group> </a-radio-group>
<a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']" <a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']"
@ -51,15 +89,15 @@
<a-col :span="12"> <a-col :span="12">
<div class="echarts-box" ref="jmrsboxlt"></div> <div class="echarts-box" ref="jmrsboxlt"></div>
</a-col> </a-col>
<a-col :span="12"> <!-- <a-col :span="12">
<div class="echarts-box" ref="jmrsboxrt"></div> <div class="echarts-box" ref="jmrsboxrt"></div>
</a-col> </a-col> -->
<a-col :span="12"> <a-col :span="12">
<div class="echarts-box" ref="jmrsboxlb"></div> <div class="echarts-box" ref="jmrsboxlb"></div>
</a-col> </a-col>
<a-col :span="12"> <!-- <a-col :span="12">
<div class="echarts-box" ref="jmrsboxrb"></div> <div class="echarts-box" ref="jmrsboxrb"></div>
</a-col> </a-col> -->
</a-row> </a-row>
</div> </div>
</div> </div>
@ -73,7 +111,7 @@
<a-radio-group v-model="queryParams3.timeType" @change="typeChange($event, 'queryParams3')"> <a-radio-group v-model="queryParams3.timeType" @change="typeChange($event, 'queryParams3')">
<a-radio-button value="0"></a-radio-button> <a-radio-button value="0"></a-radio-button>
<a-radio-button value="1"></a-radio-button> <a-radio-button value="1"></a-radio-button>
<a-radio-button value="2"></a-radio-button> <!-- <a-radio-button value="2"></a-radio-button> -->
<a-radio-button value="3"></a-radio-button> <a-radio-button value="3"></a-radio-button>
</a-radio-group> </a-radio-group>
<a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']" <a-range-picker format="YYYY-MM-DD" style="width: 280px;" :placeholder="['开始日期','结束日期']"
@ -106,13 +144,17 @@
queryRptResult, queryRptResult,
queryDptResult, queryDptResult,
selectXgzl, selectXgzl,
// queryDptResult, queryDitResult,
queryOntResult,
queryOptResult,
querySichResult, querySichResult,
queryDntResult, queryDntResult,
queryJmrs, queryJmrs,
queryJmrsResult, queryJmrsResult,
queryByDatePatient, queryByDatePatient,
queryPatient, queryPatient,
queryXgzlBfzResult,
queryXgzlLv,
} from 'api'; } from 'api';
import * as echarts from 'echarts' import * as echarts from 'echarts'
import * as dayjs from 'dayjs' import * as dayjs from 'dayjs'
@ -121,88 +163,35 @@
data() { data() {
return { return {
queryParams1: { queryParams1: {
"timeType": "0", // 0: 1: 2: 3: "timeType": "1", // 0: 1: 2: 3:
"startTime": "2024-10-01 00:00:00", // "startTime": "2024-10-01 00:00:00", //
"endTime": "2025-01-01 00:00:00" // "endTime": "2025-01-01 00:00:00" //
}, },
queryParams2: { queryParams2: {
"timeType": "0", // 0: 1: 2: 3: "timeType": "1", // 0: 1: 2: 3:
"startTime": "2024-10-01 00:00:00", // "startTime": "2024-10-01 00:00:00", //
"endTime": "2025-01-01 00:00:00" // "endTime": "2025-01-01 00:00:00" //
}, },
queryParams3: { queryParams3: {
"timeType": "0", // 0: 1: 2: 3: "timeType": "1", // 0: 1: 2: 3:
"startTime": "2024-10-01 00:00:00", //
"endTime": "2025-01-01 00:00:00" //
},
queryParams4: {
"timeType": "1", // 0: 1: 2: 3:
"startTime": "2024-10-01 00:00:00", // "startTime": "2024-10-01 00:00:00", //
"endTime": "2025-01-01 00:00:00" // "endTime": "2025-01-01 00:00:00" //
} }
} }
}, },
mounted() { mounted() {
// queryRptResult({ const _this = this;
// param: { setTimeout(() => {
// "timeType":"0", // 0: 1: 2: 3: _this.$nextTick(() => {
// "startTime":"2024-10-01 00:00:00", // _this.init()
// "endTime":"2025-01-01 00:00:00" // })
// } }, 100)
// })
// queryDptResult({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// selectXgzl({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// querySichResult({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// queryDntResult({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// queryJmrs({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// queryJmrsResult({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// queryByDatePatient({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
// queryPatient({
// param: {
// "timeType":"0", // 0: 1: 2: 3:
// "startTime":"2024-10-01 00:00:00", //
// "endTime":"2025-01-01 00:00:00" //
// }
// })
this.init()
}, },
methods: { methods: {
init(filed) { init(filed) {
@ -223,6 +212,13 @@
this.getData9() this.getData9()
this.getData10() this.getData10()
break; break;
case "queryParams3":
this.getData11()
this.getData12()
this.getData13()
this.getData14()
this.getData15()
break;
default: default:
this.getData1() this.getData1()
this.getData2() this.getData2()
@ -234,6 +230,11 @@
this.getData8() this.getData8()
this.getData9() this.getData9()
this.getData10() this.getData10()
this.getData11()
this.getData12()
this.getData13()
this.getData14()
this.getData15()
break; break;
} }
@ -281,7 +282,7 @@
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
var option = { var option = {
title: { title: {
text: '病历统计', text: '患者总数',
left: 'left' left: 'left'
}, },
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
@ -388,7 +389,7 @@
var option = { var option = {
title: { title: {
text: '数据对比', text: '患者统计',
left: 'left' left: 'left'
}, },
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
@ -462,6 +463,7 @@
}, },
// - // -
async getData4() { async getData4() {
return
var chartDom = this.$refs.jmrsboxrt var chartDom = this.$refs.jmrsboxrt
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
@ -527,7 +529,7 @@
option && myChart.setOption(option); option && myChart.setOption(option);
}, },
// - sICH // - sICH
async getData5() { async getData5() {
var chartDom = this.$refs.jmrsboxlb var chartDom = this.$refs.jmrsboxlb
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
@ -561,7 +563,7 @@
var option = { var option = {
title: { title: {
text: 'slCH发生率', text: '静脉溶栓并发症发生率',
left: 'left' left: 'left'
}, },
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
@ -582,6 +584,7 @@
}, },
// - DNT // - DNT
async getData6() { async getData6() {
return
var chartDom = this.$refs.jmrsboxrb var chartDom = this.$refs.jmrsboxrb
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
@ -650,7 +653,8 @@
async getData7() { async getData7() {
var chartDom = this.$refs.xgnboxlt var chartDom = this.$refs.xgnboxlt
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
const res = await querySichResult({ // const res = await querySichResult({
const res = await queryXgzlLv({
param: this.queryParams3 param: this.queryParams3
}) })
@ -667,7 +671,7 @@
type: 'line', type: 'line',
areaStyle: {}, areaStyle: {},
data: newlist.map(a => ({ data: newlist.map(a => ({
value: a['bfNum'], value: a['total'],
itemStyle: { itemStyle: {
borderRadius: [20, 20, 0, 0] borderRadius: [20, 20, 0, 0]
}, },
@ -695,7 +699,7 @@
var option = { var option = {
title: { title: {
text: '血管内治疗率', text: '血管内治疗再通率',
left: 'left' left: 'left'
}, },
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
@ -716,7 +720,7 @@
option && myChart.setOption(option); option && myChart.setOption(option);
}, },
// - // -
async getData8() { async _getData8() {
var chartDom = this.$refs.xgnboxrt var chartDom = this.$refs.xgnboxrt
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
@ -780,6 +784,61 @@
option && myChart.setOption(option); option && myChart.setOption(option);
}, },
// - (2)
async getData8() {
var chartDom = this.$refs.xgnboxrt;
chartDom.style.width = '100%'; //
var myChart = echarts.init(chartDom);
const res = await queryXgzlBfzResult({
param: this.queryParams3
})
var xdata = [];
const newlist = res.data.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return {
...a,
time: dayjs(a.time).format('YYYY-MM-DD')
}
})
var series = [{
type: 'line',
areaStyle: {},
data: newlist.map(a => ({
value: a['bfNum'],
itemStyle: {
borderRadius: [20, 20, 0, 0]
},
label: {
show: true,
position: 'top'
},
}))
}];
var option = {
title: {
text: '血管内治疗并发症发生率',
left: 'left'
},
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
legend: {
left: 'right'
},
xAxis: [{
type: 'category',
boundaryGap: false,
data: xdata
}],
yAxis: [{
type: 'value'
}],
series: series
};
option && myChart.setOption(option);
},
// - DPT // - DPT
async getData9() { async getData9() {
var chartDom = this.$refs.xgnboxlb var chartDom = this.$refs.xgnboxlb
@ -914,12 +973,350 @@
option && myChart.setOption(option); option && myChart.setOption(option);
}, },
// - DNT
async getData11() {
var chartDom = this.$refs.zbboxlt
var myChart = echarts.init(chartDom);
const res = await queryDntResult({
param: this.queryParams4
})
var items = ['≤45min', '≤60min', '>60min']
var xdata = [];
var series = [];
const newlist = res.data.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return {
...a,
time: dayjs(a.time).format('YYYY-MM-DD')
}
})
items.forEach(i => {
var item = {
name: i,
type: 'bar',
barWidth: 5,
data: [],
}
var filed = ""
if (i == '≤45min') filed = "dy45"
else if (i == '≤60min') filed = "dy60"
else if (i == '>60min') filed = "other"
newlist.forEach(a => {
var itemdata = {
value: a[filed],
itemStyle: {
borderRadius: [20, 20, 0, 0]
},
label: {
show: true,
position: 'top'
},
}
item.data.push(itemdata)
})
series.push(item)
})
var option = {
title: {
text: 'DNT分布',
left: 'left'
},
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
legend: {
left: 'right'
},
xAxis: [{
type: 'category',
boundaryGap: false,
data: xdata
}],
yAxis: [{
type: 'value'
}],
series: series
};
option && myChart.setOption(option);
},
// - DPT
async getData12() {
var chartDom = this.$refs.zbboxrt
var myChart = echarts.init(chartDom);
const res = await queryDptResult({
param: this.queryParams4
})
var items = ['≤45min', '≤60min', '>60min']
var xdata = [];
var series = [];
const newlist = res.data.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return {
...a,
time: dayjs(a.time).format('YYYY-MM-DD')
}
})
items.forEach(i => {
var item = {
name: i,
type: 'bar',
barWidth: 5,
data: [],
}
var filed = ""
if (i == '≤45min') filed = "dy45"
else if (i == '≤60min') filed = "dy60"
else if (i == '>60min') filed = "other"
newlist.forEach(a => {
var itemdata = {
value: a[filed],
itemStyle: {
borderRadius: [20, 20, 0, 0]
},
label: {
show: true,
position: 'top'
},
}
item.data.push(itemdata)
})
series.push(item)
})
var option = {
title: {
text: 'DPT分布',
left: 'left'
},
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
legend: {
left: 'right'
},
xAxis: [{
type: 'category',
data: xdata
}],
yAxis: [{
type: 'value'
}],
series: series
};
option && myChart.setOption(option);
},
// - DIT
async getData13() {
var chartDom = this.$refs.zbboxlb
var myChart = echarts.init(chartDom);
const res = await queryDitResult({
param: this.queryParams4
})
var items = ['≤45min', '≤60min', '>60min']
var xdata = [];
var series = [];
const newlist = res.data.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return {
...a,
time: dayjs(a.time).format('YYYY-MM-DD')
}
})
items.forEach(i => {
var item = {
name: i,
type: 'bar',
barWidth: 5,
data: [],
}
var filed = ""
if (i == '≤45min') filed = "dy45"
else if (i == '≤60min') filed = "dy60"
else if (i == '>60min') filed = "other"
newlist.forEach(a => {
var itemdata = {
value: a[filed],
itemStyle: {
borderRadius: [20, 20, 0, 0]
},
label: {
show: true,
position: 'top'
},
}
item.data.push(itemdata)
})
series.push(item)
})
var option = {
title: {
text: 'DIT分布',
left: 'left'
},
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
legend: {
left: 'right'
},
xAxis: [{
type: 'category',
data: xdata
}],
yAxis: [{
type: 'value'
}],
series: series
};
option && myChart.setOption(option);
},
// - ONT
async getData14() {
var chartDom = this.$refs.zbboxrb
var myChart = echarts.init(chartDom);
const res = await queryOntResult({
param: this.queryParams4
})
var items = ['≤45min', '≤60min', '>60min']
var xdata = [];
var series = [];
const newlist = res.data.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return {
...a,
time: dayjs(a.time).format('YYYY-MM-DD')
}
})
items.forEach(i => {
var item = {
name: i,
type: 'bar',
barWidth: 5,
data: [],
}
var filed = ""
if (i == '≤45min') filed = "dy45"
else if (i == '≤60min') filed = "dy60"
else if (i == '>60min') filed = "other"
newlist.forEach(a => {
var itemdata = {
value: a[filed],
itemStyle: {
borderRadius: [20, 20, 0, 0]
},
label: {
show: true,
position: 'top'
},
}
item.data.push(itemdata)
})
series.push(item)
})
var option = {
title: {
text: 'ONT分布',
left: 'left'
},
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
legend: {
left: 'right'
},
xAxis: [{
type: 'category',
data: xdata
}],
yAxis: [{
type: 'value'
}],
series: series
};
option && myChart.setOption(option);
},
// - OPT
async getData15() {
var chartDom = this.$refs.zbboxlbb
var myChart = echarts.init(chartDom);
const res = await queryOptResult({
param: this.queryParams4
})
var items = ['≤45min', '≤60min', '>60min']
var xdata = [];
var series = [];
const newlist = res.data.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return {
...a,
time: dayjs(a.time).format('YYYY-MM-DD')
}
})
items.forEach(i => {
var item = {
name: i,
type: 'bar',
barWidth: 5,
data: [],
}
var filed = ""
if (i == '≤45min') filed = "dy45"
else if (i == '≤60min') filed = "dy60"
else if (i == '>60min') filed = "other"
newlist.forEach(a => {
var itemdata = {
value: a[filed],
itemStyle: {
borderRadius: [20, 20, 0, 0]
},
label: {
show: true,
position: 'top'
},
}
item.data.push(itemdata)
})
series.push(item)
})
var option = {
title: {
text: 'OPT分布',
left: 'left'
},
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'],
legend: {
left: 'right'
},
xAxis: [{
type: 'category',
boundaryGap: false,
data: xdata
}],
yAxis: [{
type: 'value'
}],
series: series
};
option && myChart.setOption(option);
},
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.statistics { .statistics {
height: 100%;
overflow-y: auto;
// padding: 10px; // padding: 10px;
.statistics-container { .statistics-container {
@ -960,8 +1357,18 @@
} }
} }
.sta-row-echart {
.ant-row {
.ant-col {
// width: 100%;
// height: 500px;
}
}
}
.echarts-box { .echarts-box {
height: 420px; width: 100%;
height: 350px;
background-color: #ffffff; background-color: #ffffff;
border-radius: 10px; border-radius: 10px;
padding: 10px; padding: 10px;

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

@ -63,7 +63,16 @@
background-color: #fff; background-color: #fff;
.ant-steps-vertical .ant-steps-item-content { .ant-steps-vertical .ant-steps-item-content {
min-height: 6.8rem; // min-height: 6.8rem;
}
.ant-steps {
height: 100%;
padding-bottom: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
} }
.ant-steps-item-title { .ant-steps-item-title {

67
src/views/thrombolysis/components/throm-before0.vue

@ -1,48 +1,56 @@
<template> <template>
<div class="throm-before0"> <div class="throm-before0">
<a-form <a-form class="patient-form medical-form" :form="form" layout="vertical">
class="patient-form medical-form" <a-form-item v-for="(k,v) in MEDICAL_CODE" :key="v" :label="k.text" v-if="computeShow(v, codeForm)"
:form="form" class="borderNone">
layout="vertical" <a-radio-group :disabled="writeAble" v-if="k.type==='radio'"
> v-decorator="[v,{ initialValue: k.default },]" button-style="solid"
<a-form-item v-for="(k,v) in MEDICAL_CODE" :key="v" :label="k.text" v-if="computeShow(v, codeForm)" class="borderNone"> @change="changeRadio($event.target.value, v)">
<a-radio-group :disabled="writeAble" v-if="k.type==='radio'" v-decorator="[v,{ initialValue: k.default },]" button-style="solid" @change="changeRadio($event.target.value, v)">
<a-radio-button v-for="(item,index) in k.range" :key="item" :value="item"> <a-radio-button v-for="(item,index) in k.range" :key="item" :value="item">
{{item}} {{item}}
</a-radio-button> </a-radio-button>
</a-radio-group> </a-radio-group>
<a-input :disabled="writeAble" style="width: 80%;" v-if="k.type==='datetime'" readOnly @click="selectOption(v)" v-decorator="[v,{ initialValue: k.default }]"></a-input> <a-input :disabled="writeAble" style="width: 80%;" v-if="k.type==='datetime'" readOnly
<a-input-number :disabled="writeAble" style="width: 80%;" :type="k.inputType" v-if="k.type === 'input'" v-decorator="[ v]"/> @click="selectOption(v)" v-decorator="[v,{ initialValue: k.default }]"></a-input>
<a-input-number :disabled="writeAble" style="width: 80%;" :type="k.inputType" v-if="k.type === 'input'"
v-decorator="[ v]" />
</a-form-item> </a-form-item>
<a-form-item v-for="(k,v) in HISTORY_CODE" :key="v" :label="k.text" v-if="computeShow(v, codeForm)" class="borderNone"> <a-form-item v-for="(k,v) in HISTORY_CODE" :key="v" :label="k.text" v-if="computeShow(v, codeForm)"
<a-input :disabled="writeAble" style="width: 80%;" v-if="k.type==='input'" v-decorator="[v, { initialValue: k.default },]"></a-input> class="borderNone">
<a-radio-group :disabled="writeAble" v-if="k.type==='radio'" v-decorator="[v,]" button-style="solid" @change="changeRadio($event.target.value, v)"> <a-input :disabled="writeAble" style="width: 80%;" v-if="k.type==='input'"
v-decorator="[v, { initialValue: k.default },]"></a-input>
<a-radio-group :disabled="writeAble" v-if="k.type==='radio'" v-decorator="[v,]" button-style="solid"
@change="changeRadio($event.target.value, v)">
<a-radio-button :disabled="writeAble" v-for="(item,index) in k.range" :key="item" :value="item"> <a-radio-button :disabled="writeAble" v-for="(item,index) in k.range" :key="item" :value="item">
{{item}} {{item}}
</a-radio-button> </a-radio-button>
</a-radio-group> </a-radio-group>
<a-checkbox-group :disabled="writeAble" class="solid" v-if="k.type === 'checkbox'" @change="changeRadio($event, v)" :options="k.range" v-decorator="[v,{ initialValue: codeForm[k] },]" /> <a-checkbox-group :disabled="writeAble" class="solid" v-if="k.type === 'checkbox'"
<a-input :disabled="writeAble" style="width: 80%;" v-if="k.type==='datetime'" readOnly @click="selectOption(v)" v-decorator="[v,{ initialValue: codeForm[k] },]"></a-input> @change="changeRadio($event, v)" :options="k.range"
v-decorator="[v,{ initialValue: codeForm[k] },]" />
<a-input :disabled="writeAble" style="width: 80%;" v-if="k.type==='datetime'" readOnly
@click="selectOption(v)" v-decorator="[v,{ initialValue: codeForm[k] },]"></a-input>
</a-form-item> </a-form-item>
</a-form> </a-form>
<div class="btns"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" block type="primary" @click="onSubmit">下一步</a-button> <a-button :disabled="writeAble" class="" block type="primary" @click="onSubmit">下一步</a-button>
</div> </div>
<div class="common-picker"> <div class="common-picker">
<van-datetime-picker <van-datetime-picker v-if="pickerVisable" v-model="currentDate" :formatter="formatter"
v-if="pickerVisable" @cancel="pickerVisable = false" @confirm="onConfirm" />
v-model="currentDate"
:formatter="formatter"
@cancel="pickerVisable = false"
@confirm="onConfirm"
/>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { mapMutations, mapState } from 'vuex'; import {
import { MEDICAL_CODE, HISTORY_CODE } from '@/config/code.js'; mapMutations,
mapState
} from 'vuex';
import {
MEDICAL_CODE,
HISTORY_CODE
} from '@/config/code.js';
export default { export default {
name: "ThromBefore0", name: "ThromBefore0",
data() { data() {
@ -80,7 +88,9 @@ export default{
}, },
mounted() { mounted() {
console.log('patientData', this.patientData) console.log('patientData', this.patientData)
const { recordValDict } = this.patientData; const {
recordValDict
} = this.patientData;
if (recordValDict) { if (recordValDict) {
this.$nextTick(() => { this.$nextTick(() => {
this.echo(recordValDict); this.echo(recordValDict);
@ -92,7 +102,9 @@ export default{
echo(data) { echo(data) {
for (let k in data) { for (let k in data) {
if (data[k]) { if (data[k]) {
const { answer } = data[k][0]; const {
answer
} = data[k][0];
for (let j in this.codeForm) { for (let j in this.codeForm) {
if (k === j) { if (k === j) {
this.codeForm[k] = answer.toString(); this.codeForm[k] = answer.toString();
@ -185,6 +197,7 @@ export default{
.throm-before0 { .throm-before0 {
// padding: 1rem; // padding: 1rem;
} }
.ant-input-number-input-wrap { .ant-input-number-input-wrap {
font-size: 1.2rem; font-size: 1.2rem;
} }

187
src/views/thrombolysis/components/throm-before1.vue

@ -15,62 +15,25 @@
{{ `${k}` }} {{ `${k}` }}
</div> </div>
</template> </template>
<a-icon <a-icon v-if="k.labelList" class="item-icon" type="question-circle" />
v-if="k.labelList"
class="item-icon"
type="question-circle"
/>
</a-tooltip> </a-tooltip>
</label> </label>
</div> </div>
<div class=""> <div class="">
<!-- slider --> <!-- slider -->
<div class="common-slider" v-if="k.type === 'slider'"> <div class="common-slider" v-if="k.type === 'slider'">
<van-stepper <van-stepper :disabled="writeAble" :integer="true" v-model="k.value" step="10" class="ten"
:disabled="writeAble" theme="round" />
:integer="true" <van-stepper :disabled="writeAble" :integer="true" v-model="k.value" step="5" class="five"
v-model="k.value" theme="round" />
step="10" <van-stepper :disabled="writeAble" :integer="true" v-model="k.value" step="1" class="one"
class="ten" theme="round" />
theme="round" <van-slider :disabled="writeAble" class="common-slider-slider" :min="0" :max="300" step="10"
/> v-model="k.value">
<van-stepper
:disabled="writeAble"
:integer="true"
v-model="k.value"
step="5"
class="five"
theme="round"
/>
<van-stepper
:disabled="writeAble"
:integer="true"
v-model="k.value"
step="1"
class="one"
theme="round"
/>
<van-slider
:disabled="writeAble"
class="common-slider-slider"
:min="0"
:max="300"
step="10"
v-model="k.value"
>
<template #button> <template #button>
<a-input-number <a-input-number :disabled="writeAble" type="number" id="inputNumber"
:disabled="writeAble" v-model="k.value" :min="0" :max="300" />
type="number" <a-icon class="slider-icon" type="caret-down" />
id="inputNumber"
v-model="k.value"
:min="0"
:max="300"
/>
<a-icon
class="slider-icon"
type="caret-down"
/>
<div class="inner-circle"></div> <div class="inner-circle"></div>
</template> </template>
</van-slider> </van-slider>
@ -78,20 +41,10 @@
<!-- radio <!-- radio
v-decorator="[v, { initialValue: k.default }]"--> v-decorator="[v, { initialValue: k.default }]"-->
<div class="mrsitem"> <div class="mrsitem">
<a-radio-group <a-radio-group :disabled="writeAble" size="large" v-if="k.type === 'radio'"
:disabled="writeAble" v-model="k.value" button-style="solid" @change="changeRadio($event, v)">
size="large" <a-radio-button :disabled="writeAble" v-for="(item, index) in k.range" :key="item"
v-if="k.type === 'radio'" :value="item">
v-model="k.value"
button-style="solid"
@change="changeRadio($event, v)"
>
<a-radio-button
:disabled="writeAble"
v-for="(item, index) in k.range"
:key="item"
:value="item"
>
{{ item }} {{ item }}
</a-radio-button> </a-radio-button>
</a-radio-group> </a-radio-group>
@ -101,19 +54,10 @@
<div class="item-name"> <div class="item-name">
<span class="item-info">得分</span> <span class="item-info">得分</span>
</div> </div>
<a-input-number <a-input-number :type="k.inputType" :min="0" :max="100"
:type="k.inputType" style="width: 20%; margin-left: 20px" v-decorator="[v]" />
:min="0"
:max="100"
style="width: 20%; margin-left: 20px"
v-decorator="[v]"
/>
</div> </div>
<div <div class="niss-list-item" v-for="(item, index) in k.range" :key="item.text">
class="niss-list-item"
v-for="(item, index) in k.range"
:key="item.text"
>
<div class="item-name"> <div class="item-name">
<span class="item-info">{{ <span class="item-info">{{
item.text item.text
@ -122,47 +66,23 @@
<template slot="title"> <template slot="title">
{{ item.description }} {{ item.description }}
</template> </template>
<a-icon <a-icon v-if="item.description" class="item-icon" type="question-circle" />
v-if="item.description"
class="item-icon"
type="question-circle"
/>
</a-tooltip> </a-tooltip>
</div> </div>
<a-popover <a-popover v-model="item.visible" placement="bottom">
v-model="item.visible"
placement="bottom"
>
<template slot="content" v-if="item.range"> <template slot="content" v-if="item.range">
<a-radio-group <a-radio-group :disabled="writeAble" v-model="nissValue" button-style="solid"
:disabled="writeAble" @change="changeRangeRadio(item, v)">
v-model="nissValue" <a-radio-button v-for="(
button-style="solid"
@change="changeRangeRadio(item, v)"
>
<a-radio-button
v-for="(
val, index val, index
) in item.range" ) in item.range" :key="val.value" :value="val.value" @click="item.visible = false">
:key="val.value"
:value="val.value"
@click="item.visible = false"
>
{{ val.value }} {{ val.value }}
</a-radio-button> </a-radio-button>
</a-radio-group> </a-radio-group>
</template> </template>
<a-input-number <a-input-number :disabled="writeAble" ref="inputNumber" class="noControls"
:disabled="writeAble" @focus="focusInput(index)" @click="changeInput($event, item)"
ref="inputNumber" style="width: 20%; margin-left: 20px" v-model="item.value" :min="0" :max="10" />
class="noControls"
@focus="focusInput(index)"
@click="changeInput($event, item)"
style="width: 20%; margin-left: 20px"
v-model="item.value"
:min="0"
:max="10"
/>
</a-popover> </a-popover>
</div> </div>
</div> </div>
@ -170,14 +90,17 @@
</div> </div>
</a-form-item> </a-form-item>
</a-form> </a-form>
<div class="btns"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" @click="onSubmit">下一步</a-button> <a-button :disabled="writeAble" class="" block type="primary" size="large" @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { mapMutations, mapState } from 'vuex'; import {
mapMutations,
mapState
} from 'vuex';
import { import {
EMERGENCY_CODE, EMERGENCY_CODE,
EMERGENCY_Q_CODE, EMERGENCY_Q_CODE,
@ -246,16 +169,21 @@
}, },
mounted() { mounted() {
console.log(this.timerData) console.log(this.timerData)
const { code } = this.timerData; const {
code
} = this.timerData;
if (code) { if (code) {
this.recordDict = this.dataForm[`${code}`]; this.recordDict = this.dataForm[`${code}`];
} else { } else {
this.recordDict = EMERGENCY_CODE; this.recordDict = EMERGENCY_CODE;
} }
const { recordValDict } = this.patientData; const {
recordValDict
} = this.patientData;
if (recordValDict) { if (recordValDict) {
this.$nextTick(() => { this.$nextTick(() => {
// console.log('recordValDict', recordValDict)
this.echo(recordValDict); this.echo(recordValDict);
}); });
} }
@ -263,13 +191,18 @@
methods: { methods: {
...mapMutations('patient', ['setPatientData']), ...mapMutations('patient', ['setPatientData']),
echo(data) { echo(data) {
const { code } = this.timerData; const {
const wangbadan = code code
? this.codeFormData[`${code}`] } = this.timerData;
: this.codeForm; // console.log('code', code)
const wangbadan = code ?
this.codeFormData[`${code}`] :
this.codeForm;
for (let k in wangbadan) { for (let k in wangbadan) {
if (data[k]) { if (data[k]) {
const { answer } = data[k][0]; const {
answer
} = data[k][0];
this.form.getFieldDecorator([`${k}`], { this.form.getFieldDecorator([`${k}`], {
preserve: true, //便使 preserve: true, //便使
}); });
@ -277,9 +210,12 @@
[`${k}`]: answer.toString(), [`${k}`]: answer.toString(),
}); });
let value = this.recordDict[k]; let value = this.recordDict[k];
if (value && value.value) { if (value && value.value && k !== 'RYPG-MRS') {
value.value = Number(answer.toString()); value.value = Number(answer.toString());
} else if (value && value.value) {
value.value = answer.toString();
} }
} }
} }
}, },
@ -322,9 +258,13 @@
e.preventDefault(); e.preventDefault();
this.form.validateFields(async (err, values) => { this.form.validateFields(async (err, values) => {
// if (err) return // if (err) return
const { firstAidId } = this.patientData; const {
firstAidId
} = this.patientData;
let codeAndAnswerList = []; let codeAndAnswerList = [];
const { recordDict } = this; const {
recordDict
} = this;
const codes = [ const codes = [
// 'RYPG-MRS', // 'RYPG-MRS',
'RYPG-NIHSS', 'RYPG-NIHSS',
@ -453,6 +393,7 @@
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
.niss-list-item { .niss-list-item {
width: 45%; width: 45%;
display: flex; display: flex;
@ -483,6 +424,7 @@
} }
} }
// .common-slider-slider{ // .common-slider-slider{
// background: linear-gradient(#007AFF, #52A5FF); // background: linear-gradient(#007AFF, #52A5FF);
// } // }
@ -500,13 +442,16 @@
.ant-form .ant-form-item { .ant-form .ant-form-item {
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
} }
.ant-form .ant-form-item { .ant-form .ant-form-item {
border: none; border: none;
} }
} }
.mrsitem { .mrsitem {
text-align: center; text-align: center;
} }
// .common-slider .common-slider-slider .ant-input-number .ant-input-number-input { // .common-slider .common-slider-slider .ant-input-number .ant-input-number-input {
// text-align: center; // text-align: center;
// font-size: 2vw; // font-size: 2vw;

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

@ -20,8 +20,8 @@
</template> </template>
</a-table> </a-table>
<div class="btns" v-if="!outside"> <div class="throm-common-button" v-if="!outside">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" @click="onSubmit">下一步</a-button> <a-button :disabled="writeAble" class="" block type="primary" size="large" @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
</template> </template>

34
src/views/thrombolysis/components/throm-before3.vue

@ -3,7 +3,7 @@
<a-card style="width:100%" :tab-list="tabList" :active-tab-key="activeTabKey" <a-card style="width:100%" :tab-list="tabList" :active-tab-key="activeTabKey"
@tabChange="key => onTabChange(key, 'key')"> @tabChange="key => onTabChange(key, 'key')">
<div class="image-container" v-if="activeTabKey == 'tab1'"> <div class="image-container" v-if="activeTabKey == 'tab1'">
<throm-interfere-image-dcm></throm-interfere-image-dcm> <throm-interfere-image-dcm :firstAidId="patientData?.firstAidId"></throm-interfere-image-dcm>
</div> </div>
<div class="image-container" v-else-if="activeTabKey == 'ct'"> <div class="image-container" v-else-if="activeTabKey == 'ct'">
<template v-if="fileList && fileList.length"> <template v-if="fileList && fileList.length">
@ -17,11 +17,12 @@
</div> </div>
</div> </div>
</a-card> </a-card>
<div class="btns " v-if="!outside"> <div class="throm-common-button " v-if="!outside">
<w-upload @ok="handleUpload" btn-type="button" btn-text="上传院前CT图片" style="margin-bottom: 1rem; " <!-- <w-upload @ok="handleUpload" btn-type="button" btn-text="上传院前CT图片"
v-if="fileList.length < 5" /> v-if="fileList.length < 5" /> -->
<a-button :disabled="writeAble" class="" block size="large" v-if="fileList.length < 5"
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" @click="openCamera">上传院前CT图片</a-button>
<a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="onSubmit">下一步</a-button> @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
@ -147,30 +148,20 @@
this.$message.success('患者已审核,内容不可更改') this.$message.success('患者已审核,内容不可更改')
return return
} }
// if (!window.plus) {
// // H5 使 `plus` API
// this.$message.success(' plus API')
// return
// // console.log(' plus API');
// }
const cmr = plus.camera.getCamera(); const cmr = plus.camera.getCamera();
if (!cmr) { if (!cmr) {
this.$message.success('没有可用的摄像头'); this.$message.success('没有可用的摄像头');
return; return;
} }
const res = cmr.supportedImageResolutions.length > 0 ? cmr.supportedImageResolutions[0] : { const res = cmr.supportedImageResolutions[0]; // ;
width: 640, const fmt = cmr.supportedImageFormats[0];
height: 480
}; // ;
const fmt = cmr.supportedImageFormats.length > 0 ? cmr.supportedImageFormats[0] : 'jpeg';
if (!res || !fmt) { if (!res || !fmt) {
plus.nativeUI.toast('摄像头不支持该格式或分辨率'); plus.nativeUI.toast('摄像头不支持该格式或分辨率');
return; return;
} }
// const res = cmr.supportedImageResolutions[0];
// const fmt = cmr.supportedImageFormats[0];
cmr.captureImage( cmr.captureImage(
(path) => { (path) => {
// console.log('captureImage', path)
plus.io.resolveLocalFileSystemURL( plus.io.resolveLocalFileSystemURL(
path, path,
(entry) => { (entry) => {
@ -187,11 +178,12 @@
(error) => { (error) => {
// alert("Capture image failed: " + error.message); // alert("Capture image failed: " + error.message);
}, { }, {
resolution: res, resolution: "640*480",
format: fmt, format: "jpg",
filter: 'image', filter: 'image',
} }
); );
}, },
// //
compressImage(url, filename) { compressImage(url, filename) {

12
src/views/thrombolysis/components/throm-before4.vue

@ -101,8 +101,6 @@
@cancel="picker = false" /> @cancel="picker = false" />
</div> </div>
<div class="btns"> <div class="btns">
<a-button :disabled="writeAble" class="common-button" type="primary" size="large" block
@click="onSubmitSign" v-if="!disabled">提交</a-button>
</div> </div>
</div> </div>
@ -125,10 +123,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="btns" style="margin-top: 50px;">
<a-button :disabled="writeAble" class="common-button" type="primary" size="large" block
@click="onSubmit">提交</a-button>
</div>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel"> <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
<img style="width: 100%" :src="previewImage" /> <img style="width: 100%" :src="previewImage" />
@ -150,8 +144,10 @@
</div> </div>
</div> </div>
</div> </div>
<div class="btns"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <a-button :disabled="writeAble" class="" type="primary" size="large" block
@click="onSubmitSign" v-if="!disabled && activeTabKey == 'tab1'">提交</a-button>
<a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="handleNext">下一步</a-button> @click="handleNext">下一步</a-button>
</div> </div>
</div> </div>

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

@ -256,8 +256,8 @@
</a-modal> --> </a-modal> -->
</div> </div>
<div class="btns"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" @click="onSubmit">下一步</a-button> <a-button :disabled="writeAble" class="" block type="primary" size="large" @click="onSubmit">下一步</a-button>
</div> </div>
<!-- <div class="first-footer"> <!-- <div class="first-footer">
<a-button <a-button

10
src/views/thrombolysis/components/throm-ing-min.vue

@ -68,7 +68,8 @@
</a-tooltip> </a-tooltip>
</div> </div>
</div> </div>
<a-popover v-model="item.visible" placement="bottomRight" arrow-point-at-center> <a-popover v-model="item.visible" placement="bottomRight" arrow-point-at-center
trigger="click">
<template slot="content" v-if="item.range"> <template slot="content" v-if="item.range">
<a-radio-group :disabled="writeAble" v-model="nissValue" button-style="solid" <a-radio-group :disabled="writeAble" v-model="nissValue" button-style="solid"
@change="changeRangeRadio(item, v)"> @change="changeRangeRadio(item, v)">
@ -80,7 +81,7 @@
</a-radio-group> </a-radio-group>
</template> </template>
<a-input-number :disabled="writeAble" ref="inputNumber" class="noControls" <a-input-number :disabled="writeAble" ref="inputNumber" class="noControls"
@focus="focusInput(index)" @click="changeInput($event, item)" @focus="focusInput(index)" @click="changeInput($event, item)" readonly
style="width: 20%; margin-left: 20px" v-model="item.value" :min="0" :max="10" /> style="width: 20%; margin-left: 20px" v-model="item.value" :min="0" :max="10" />
</a-popover> </a-popover>
</div> </div>
@ -89,8 +90,8 @@
</div> </div>
</a-form-item> </a-form-item>
</a-form> </a-form>
<div class="btns" style="margin-top: 2rem;"> <div class="throm-common-button" >
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="onSubmit">下一步</a-button> @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
@ -208,6 +209,7 @@
const { const {
code code
} = this.timerData; } = this.timerData;
console.log('code=====', code)
const wangbadan = code ? const wangbadan = code ?
this.codeFormData[`${code}`] : this.codeFormData[`${code}`] :
this.codeForm; this.codeForm;

10
src/views/thrombolysis/components/throm-ing-reactions.vue

@ -41,12 +41,12 @@
<van-datetime-picker v-if="adversePickerVisable" v-model="currentAdverseDate" :formatter="formatter" <van-datetime-picker v-if="adversePickerVisable" v-model="currentAdverseDate" :formatter="formatter"
@cancel="adversePickerVisable = false" @confirm="onAdverseConfirm" /> @cancel="adversePickerVisable = false" @confirm="onAdverseConfirm" />
</div> </div>
<div class="btns"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" style="margin-right: 20px;" type="primary" <a-button :disabled="writeAble" class="" type="primary"
size="large" block @click="onAdverseSubmit" v-if="source !== 'first'">保存</a-button> size="large" block @click="onAdverseSubmit" v-if="source !== 'first'">下一步</a-button>
<a-button :disabled="writeAble" class="common-button" style="margin-right: 20px;" type="primary" <a-button :disabled="writeAble" class="" type="primary"
size="large" block @click="handleNext" v-else>下一步</a-button> size="large" block @click="handleNext" v-else>下一步</a-button>
<!-- <a-button class="common-button" disabled type="primary" size="large" shape="round" <!-- <a-button class="" disabled type="primary" size="large" shape="round"
@click="onAdverseSubmit">下发医嘱</a-button> --> @click="onAdverseSubmit">下发医嘱</a-button> -->
</div> </div>
</div> </div>

41
src/views/thrombolysis/components/throm-ing-record.vue

@ -4,17 +4,19 @@
<div class="record-content" v-html="dataInfo"></div> <div class="record-content" v-html="dataInfo"></div>
<a-result class="common-result" v-if="!dataInfo" title="暂无记录"></a-result> <a-result class="common-result" v-if="!dataInfo" title="暂无记录"></a-result>
</div> </div>
<div class="btns"> <div class="throm-common-button">
<a-button class="common-button" size="large" block @click="handlePrint">打印</a-button> <a ref="downloadRef" target="_blank" href="javascript:;" style="display: none;"></a>
<a-button class="common-button" type="primary" size="large" block @click="onSubmit">导出</a-button> <a-button class="" size="large" block @click="handlePrint">打印</a-button>
<a-button class="common-button" type="primary" size="large" block @click="handleNext">下一步</a-button> <a-button class="" type="primary" size="large" block @click="handlePrint">导出</a-button>
<a-button class="" type="primary" size="large" block @click="handleNext">下一步</a-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import {
queryLog queryLog,
exportRsPdf
} from 'api' } from 'api'
import { import {
mapState mapState
@ -48,8 +50,35 @@
} }
}, },
methods: { methods: {
handlePrint() {}, async handlePrint() {
const {
firstAidId
} = this.patientData
const res = await exportRsPdf({
firstAidId
})
const {
code,
data,
msg
} = res
if (code === 200) {
this.toDownLoad(data)
} else {
this.$message.error(msg)
}
},
onSubmit() {}, onSubmit() {},
toDownLoad(path) {
try {
this.$refs.downloadRef.setAttribute('href', 'http://116.204.114.73:20007' + path)
this.$refs.downloadRef.setAttribute('download', '.xlsx')
this.$refs.downloadRef.click()
} catch (e) {
//TODO handle the exception
console.log(e.message)
}
},
handleNext() { handleNext() {
this.$emit('next') this.$emit('next')
} }

5
src/views/thrombolysis/components/throm-ing-selDrug.vue

@ -29,7 +29,7 @@
</a-form> </a-form>
<div class="btns"> <div class="btns">
<a-button :disabled="writeAble" class="common-button" type="primary" size="large" block <a-button :disabled="writeAble" class="common-button" type="primary" size="large" block
@click="onSubmit">保存</a-button> @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
@ -63,7 +63,7 @@
...mapState('patient', ['patientData', 'writeAble']), ...mapState('patient', ['patientData', 'writeAble']),
}, },
mounted() { mounted() {
console.log('RSYW_CODE', this.RSYW_CODE) // console.log('RSYW_CODE', this.RSYW_CODE)
const { const {
recordValDict recordValDict
} = this.patientData; } = this.patientData;
@ -95,7 +95,6 @@
if (j !== 'JMRS-RSYW') { if (j !== 'JMRS-RSYW') {
if (data[j]) { if (data[j]) {
let ans = data[j][0].answer; let ans = data[j][0].answer;
console.log('ans', ans.toString())
this.RSYW_CODE[`${j}`].value = Number( this.RSYW_CODE[`${j}`].value = Number(
ans.toString() ans.toString()
); );

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

@ -36,7 +36,8 @@
<script> <script>
import { import {
mapState mapState,
mapMutations
} from 'vuex'; } from 'vuex';
import ThromIngDate from './throm-ing-date.vue' import ThromIngDate from './throm-ing-date.vue'
import ThromIngDrug from './throm-ing-selDrug.vue'; import ThromIngDrug from './throm-ing-selDrug.vue';
@ -67,7 +68,7 @@
} }
}, },
computed: { computed: {
...mapState('patient', ['patientData', 'book']), ...mapState('patient', ['patientData', 'timerData', 'book']),
stepDesc() { stepDesc() {
return { return {
drugDesc: this.patientData?.recordValDict?.['JMRS-RSYW']?.[0]?.answer[0] || '', drugDesc: this.patientData?.recordValDict?.['JMRS-RSYW']?.[0]?.answer[0] || '',
@ -88,7 +89,19 @@
// console.log('book', this.book) // console.log('book', this.book)
}, },
methods: { methods: {
...mapMutations('patient', ['setTimerData']),
handleClickStep(current) { handleClickStep(current) {
console.log(this.timerData)
let code = null
if (current == 1) code = 'JMRS-Q-NIHSS'
else if (current == 2) code = 'JMRS-15-NIHSS'
else if (current == 3) code = 'JMRS-30-NIHSS'
else if (current == 4) code = 'JMRS-45-NIHSS'
else if (current == 5) code = 'JMRS-60-NIHSS'
code && this.setTimerData({
...this.timerData,
code
})
this.currentIndex = current; this.currentIndex = current;
}, },
handleNext() { handleNext() {
@ -110,8 +123,15 @@
margin-right: .2rem; margin-right: .2rem;
background-color: #fff; background-color: #fff;
.ant-steps-vertical .ant-steps-item-content { // .ant-steps-vertical .ant-steps-item-content {
min-height: 4rem; // min-height: 4rem;
// }
.ant-steps {
height: 100%;
padding-bottom: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
} }
.ant-steps-item-title { .ant-steps-item-title {

25
src/views/thrombolysis/components/throm-interfere-image-dcm.vue

@ -91,6 +91,12 @@
components: { components: {
dcmview, dcmview,
}, },
props: {
firstAidId: {
type: String,
default: '',
},
},
data() { data() {
return { return {
load: false, load: false,
@ -194,11 +200,11 @@
computed: { computed: {
...mapState('storm', ['spinning', 'showNav']), ...mapState('storm', ['spinning', 'showNav']),
...mapState('patient', ['patientData', 'timerData', 'overviewType']), // ...mapState('patient', ['patientData', 'timerData', 'overviewType']),
}, },
mounted() { mounted() {
this.toolType = 'ScrollTool'; this.toolType = 'ScrollTool';
this.goCreate(); this.firstAidId && this.goCreate();
// console.log(11111111111); // console.log(11111111111);
}, },
methods: { methods: {
@ -207,12 +213,12 @@
console.log('firstAidId', 2222223333333) console.log('firstAidId', 2222223333333)
try { try {
this.load = true; this.load = true;
const { // const {
firstAidId // firstAidId
} = this.patientData; // } = this.patientData;
console.log('firstAidId', firstAidId) console.log('firstAidId', this.firstAidId)
const res = await getCtInfoPath({ const res = await getCtInfoPath({
firstAidId firstAidId: this.firstAidId
}); });
const { const {
data, data,
@ -234,7 +240,8 @@
item.patientSex = row.patientSex; item.patientSex = row.patientSex;
item.studyId = row.studyId; item.studyId = row.studyId;
// row.dcmPath = apiUrl + row.dcmPath; // row.dcmPath = apiUrl + row.dcmPath;
row.dcmPath = 'http://116.204.114.73:9300/static/1884873965911019520/2025/1/30/CT.1.2.392.200036.9116.2.5.1.37.2420784501.1738221085.722823.dcm' row.dcmPath =
'http://116.204.114.73:9300/static/1884873965911019520/2025/1/30/CT.1.2.392.200036.9116.2.5.1.37.2420784501.1738221085.722823.dcm'
}); });
}); });
// //
@ -252,7 +259,7 @@
console.log('err: ', err); console.log('err: ', err);
} }
}, },
//
// - // -
hanldeByValue(_index) { hanldeByValue(_index) {
this.currentIndex = _index + 1; this.currentIndex = _index + 1;

2
src/views/thrombolysis/components/throm-interfere-image.vue

@ -3,7 +3,7 @@
<a-card style="width:100%" :tab-list="tabList" :active-tab-key="activeTabKey" <a-card style="width:100%" :tab-list="tabList" :active-tab-key="activeTabKey"
@tabChange="key => onTabChange(key, 'key')"> @tabChange="key => onTabChange(key, 'key')">
<div class="image-container"> <div class="image-container">
<throm-interfere-image-dcm></throm-interfere-image-dcm> <throm-interfere-image-dcm :firstAidId="patientData?.firstAidId"></throm-interfere-image-dcm>
<!-- <div class="notImg">溶栓视频安全区</div> --> <!-- <div class="notImg">溶栓视频安全区</div> -->
<!-- <div v-if="tabList.length"> <!-- <div v-if="tabList.length">
{{activeTabKey}} {{activeTabKey}}

12
src/views/thrombolysis/components/throm-interfere-informed.vue

@ -100,10 +100,6 @@
<van-datetime-picker v-if="picker" v-model="currentDate" type="date" @confirm="confirmPicker" <van-datetime-picker v-if="picker" v-model="currentDate" type="date" @confirm="confirmPicker"
@cancel="picker = false" /> @cancel="picker = false" />
</div> </div>
<div class="btns">
<a-button :disabled="writeAble" class="common-button" type="primary" size="large" block
@click="onSubmitSign" v-if="!disabled">提交</a-button>
</div>
</div> </div>
<div class="video-container" v-if="activeTabKey == 'tab2'"> <div class="video-container" v-if="activeTabKey == 'tab2'">
<div class="upload-informed-container"> <div class="upload-informed-container">
@ -162,9 +158,11 @@
<img :src="apiUrl + currentSign" alt="" style="width: 100%; height: 100%;" /> <img :src="apiUrl + currentSign" alt="" style="width: 100%; height: 100%;" />
</div> </div>
</a-modal> </a-modal>
<div class="btns">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <div class="throm-common-button">
@click="onSubmit">下一步</a-button> <a-button :disabled="writeAble" class="" type="primary" size="large" block @click="onSubmitSign"
v-if="!disabled && activeTabKey == 'tab1'">提交</a-button>
<a-button :disabled="writeAble" class="" block type="primary" size="large" @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
</template> </template>

10
src/views/thrombolysis/components/throm-interfere-surgical.vue

@ -16,8 +16,8 @@
<a-result class="common-result" v-if="!dataInfo" title="暂无记录"></a-result> <a-result class="common-result" v-if="!dataInfo" title="暂无记录"></a-result>
</div> </div>
</div> </div>
<div class="btns"> <div class="throm-common-button">
<a-button class="common-button" block type="primary" size="large" @click="onSubmit">下一步</a-button> <a-button class="" block type="primary" size="large" @click="onSubmit">下一步</a-button>
</div> </div>
</div> </div>
</template> </template>
@ -113,12 +113,12 @@
<style lang="less" scoped> <style lang="less" scoped>
.throm-interfere-surgical { .throm-interfere-surgical {
.opera-list { .opera-list {
min-height: 500px; // min-height: 500px;
} }
.Record-container { .Record-container {
// height: 50vh;
height: 50vh; min-height: 500px;
color: #000; color: #000;
background-color: #eee; background-color: #eee;
padding: 1rem; padding: 1rem;

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

@ -54,8 +54,15 @@
margin-right: .2rem; margin-right: .2rem;
background-color: #fff; background-color: #fff;
.ant-steps-vertical .ant-steps-item-content { // .ant-steps-vertical .ant-steps-item-content {
min-height: 10rem; // min-height: 10rem;
// }
.ant-steps {
height: 100%;
padding-bottom: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
} }
.ant-steps-item-title { .ant-steps-item-title {

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

@ -115,7 +115,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-card class="report-card" title="急诊溶栓记录"> <a-card class="report-card" title="急诊溶栓记录">
<a slot="extra" id="exportFirst" href="JavaScript:;" @click="exportRecord">导出</a> <a slot="extra" id="exportFirst" href="JavaScript:;" @click="handleExportRsPdf">导出</a>
<div class="report-card-content"> <div class="report-card-content">
<div class="record-content" v-html="recordData"></div> <div class="record-content" v-html="recordData"></div>
<div class="emtpy" v-if="!recordData"> <div class="emtpy" v-if="!recordData">
@ -126,7 +126,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-card class="report-card" title="溶栓观察表"> <a-card class="report-card" title="溶栓观察表">
<a slot="extra" href="#" @click="handleExport">导出</a> <a slot="extra" href="javascript:;" @click="handleExportRsgcbPdf">导出</a>
<div class="doc-ct-content"> <div class="doc-ct-content">
<div> <div>
<table border class="report-rsgcb"> <table border class="report-rsgcb">
@ -233,7 +233,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-card class="report-card" title="DNT时间表"> <a-card class="report-card" title="DNT时间表">
<a slot="extra" href="#">导出</a> <a slot="extra" href="javascript:;" @click="handleExportDntPdf">导出</a>
<div class="doc-ct-content"> <div class="doc-ct-content">
<div class="record-content"> <div class="record-content">
<table border class="report-rsgcb"> <table border class="report-rsgcb">
@ -401,7 +401,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-card class="report-card" title="介入手术记录"> <a-card class="report-card" title="介入手术记录">
<a slot="extra" href="#">导出</a> <a slot="extra" href="javascript:;" @click="handleExportJrPdf">导出</a>
<div class="doc-ct-content"> <div class="doc-ct-content">
<div class="record-content" v-html="operaData"></div> <div class="record-content" v-html="operaData"></div>
<div class="emtpy" v-if="!operaData"> <div class="emtpy" v-if="!operaData">
@ -412,10 +412,10 @@
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
<div class="btns"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" type="primary" size="large" block <a-button :disabled="writeAble" class="" type="primary" size="large" block
@click="onSubmit">打印</a-button> @click="handleExportAll">打印</a-button>
<!-- <a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <!-- <a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="onSubmit">导出</a-button> --> @click="onSubmit">导出</a-button> -->
</div> </div>
<throm-report-dnt ref="dnt"></throm-report-dnt> <throm-report-dnt ref="dnt"></throm-report-dnt>
@ -442,7 +442,11 @@
operationLog, operationLog,
getCtInfoPath, getCtInfoPath,
operationLogEx, operationLogEx,
exportRsPdf exportRsPdf,
exportDntPdf,
exportRsgcbPdf,
exportJrPdf,
exportAll,
} from 'api'; } from 'api';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration'; import duration from 'dayjs/plugin/duration';
@ -769,14 +773,11 @@
this.$message.error('缺少急救id信息'); this.$message.error('缺少急救id信息');
} }
}, },
async exportRecord() {
async handleExportRsPdf() {
const { const {
firstAidId firstAidId
} = this.patient } = this.patient
// const res = await queryLog({
// firstAidId
// })
const res = await exportRsPdf({ const res = await exportRsPdf({
firstAidId firstAidId
}) })
@ -791,6 +792,78 @@
this.$message.error(msg) this.$message.error(msg)
} }
}, },
async handleExportDntPdf() {
const {
firstAidId
} = this.patient
const res = await exportDntPdf({
firstAidId
})
const {
code,
data,
msg
} = res
if (code === 200) {
this.toDownLoad(data)
} else {
this.$message.error(msg)
}
},
async handleExportRsgcbPdf() {
const {
firstAidId
} = this.patient
const res = await exportRsgcbPdf({
firstAidId
})
const {
code,
data,
msg
} = res
if (code === 200) {
this.toDownLoad(data)
} else {
this.$message.error(msg)
}
},
async handleExportJrPdf() {
const {
firstAidId
} = this.patient
const res = await exportJrPdf({
firstAidId
})
const {
code,
data,
msg
} = res
if (code === 200) {
this.toDownLoad(data)
} else {
this.$message.error(msg)
}
},
async handleExportAll() {
const {
firstAidId
} = this.patient
const res = await exportAll({
firstAidId
})
const {
code,
data,
msg
} = res
if (code === 200) {
this.toDownLoad(data)
} else {
this.$message.error(msg)
}
},
toDownLoad(path) { toDownLoad(path) {
try { try {
// document.getElementById('exportFirst').href = path; // document.getElementById('exportFirst').href = path;
@ -813,9 +886,9 @@
// padding-top: 1rem; // padding-top: 1rem;
.report-container { .report-container {
height: calc(100vh - 196px); height: calc(100vh - 196px);
overflow-y: auto; overflow-y: auto;
overflow-x: hidden;
// padding: 10px; // padding: 10px;
} }
@ -961,9 +1034,16 @@
// height: 424px; // height: 424px;
overflow-y: auto; overflow-y: auto;
.ant-steps-vertical .ant-steps-item-content { // .ant-steps-vertical .ant-steps-item-content {
// min-height: 4.38rem; // // min-height: 4.38rem;
width: 88%; // width: 88%;
// }
.ant-steps {
height: 100%;
padding-bottom: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
} }
.ant-steps-item-title { .ant-steps-item-title {

4
src/views/thrombolysis/components/throm-result-baseInfo.vue

@ -94,8 +94,8 @@
@cancel="pickerVisable = false" @confirm="onConfirm" /> @cancel="pickerVisable = false" @confirm="onConfirm" />
</div> </div>
</div> </div>
<div class="basic-footer"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="onSubmit">{{patientId ? '保存' : '下一步'}}</a-button> @click="onSubmit">{{patientId ? '保存' : '下一步'}}</a-button>
<!-- <a-button :disabled="writeAble" type="link" size="large" @click="onSubmit"> <!-- <a-button :disabled="writeAble" type="link" size="large" @click="onSubmit">
保存<a-icon type="check" /> 保存<a-icon type="check" />

4
src/views/thrombolysis/components/throm-result-firstInfo.vue

@ -231,8 +231,8 @@
<!-- <Informed ref="informed" source="first" @on-success="successInformed" /> --> <!-- <Informed ref="informed" source="first" @on-success="successInformed" /> -->
</a-modal> </a-modal>
</div> </div>
<div class="first-footer"> <div class="throm-common-button">
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <a-button :disabled="writeAble" class="" block type="primary" size="large"
@click="onSubmit($event, patientId)">{{patientId? '保存' : '完成'}}</a-button> @click="onSubmit($event, patientId)">{{patientId? '保存' : '完成'}}</a-button>
<!-- <a-button :disabled="writeAble" type="link" size="large" @click="onSubmit"> <!-- <a-button :disabled="writeAble" type="link" size="large" @click="onSubmit">
保存<a-icon type="check" /> 保存<a-icon type="check" />

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

@ -55,7 +55,7 @@
} }
</script> </script>
<style lang="less" scoped> <style lang="less">
.throm-result { .throm-result {
display: flex; display: flex;
@ -65,7 +65,7 @@
background-color: #fff; background-color: #fff;
.ant-steps-vertical .ant-steps-item-content { .ant-steps-vertical .ant-steps-item-content {
min-height: 6rem; min-height: 10rem;
} }
.ant-steps-item-title { .ant-steps-item-title {

Loading…
Cancel
Save