Browse Source

init

master
nicky 5 months ago
parent
commit
f526586ce1
  1. 176
      src/api/index.js
  2. 11
      src/api/login.js
  3. BIN
      src/assets/images/login-bg.png
  4. BIN
      src/assets/images/logo.jpg
  5. 6
      src/assets/less/common.less
  6. 2
      src/config/setting.js
  7. 4
      src/layouts/BasicLayout.less
  8. 6
      src/layouts/BasicLayout.vue
  9. 5
      src/router/index.js
  10. 16
      src/store/modules/patient/mutations.js
  11. 1
      src/store/modules/patient/state.js
  12. 31
      src/store/modules/storm/actions.js
  13. 142
      src/views/Patient/components/patient-detail.vue
  14. 32
      src/views/Patient/components/patient-list.vue
  15. 200
      src/views/Patient/index.vue
  16. 6
      src/views/document/components/report.vue
  17. 28
      src/views/document/index.vue
  18. 182
      src/views/login/index.vue
  19. 53
      src/views/statistics/index.vue
  20. 1
      src/views/thrombolysis/components/throm-before0.vue
  21. 4
      src/views/thrombolysis/components/throm-before2.vue
  22. 12
      src/views/thrombolysis/components/throm-before4.vue
  23. 54
      src/views/thrombolysis/components/throm-report-dnt.vue
  24. 54
      src/views/thrombolysis/components/throm-report-observe.vue
  25. 54
      src/views/thrombolysis/components/throm-report-opera.vue
  26. 48
      src/views/thrombolysis/components/throm-report-record.vue
  27. 137
      src/views/thrombolysis/components/throm-report.vue

176
src/api/index.js

@ -1,5 +1,7 @@
import axios from 'axios'; import axios from 'axios';
let { proxyUrl } = require('@/config/setting'); let {
proxyUrl
} = require('@/config/setting');
let proxyUrl1 = proxyUrl + '/workstation'; let proxyUrl1 = proxyUrl + '/workstation';
//查询民族列表 //查询民族列表
export const getNation = () => axios.post(`${proxyUrl1}/sys/nation/list`); export const getNation = () => axios.post(`${proxyUrl1}/sys/nation/list`);
@ -26,32 +28,47 @@ export const create = (params) =>
// 查病历数据 // 查病历数据
export const queryAidRecord = (firstAidId, codeList) => export const queryAidRecord = (firstAidId, codeList) =>
axios.post(`${proxyUrl1}/firstAid/queryAidRecord`, { axios.post(`${proxyUrl1}/firstAid/queryAidRecord`, {
param: { firstAidId, codeList }, param: {
firstAidId,
codeList
},
}); });
// 更新急救code信息 // 更新急救code信息
export const saveAidRecord = (param) => export const saveAidRecord = (param) =>
axios.post(`${proxyUrl1}/firstAid/saveAidRecord`, { param }); axios.post(`${proxyUrl1}/firstAid/saveAidRecord`, {
param
});
// 更新急救基本信息 // 更新急救基本信息
export const updateAidBase = (param) => export const updateAidBase = (param) =>
axios.post(`${proxyUrl1}/firstAid/update`, { param }); axios.post(`${proxyUrl1}/firstAid/update`, {
param
});
//溶栓记录 //溶栓记录
export const queryLog = (param) => export const queryLog = (param) =>
axios.post(`${proxyUrl1}/firstAid/queryLog`, { param }); axios.post(`${proxyUrl1}/firstAid/queryLog`, {
param
});
//医嘱查询 //医嘱查询
export const adviceQuery = (param) => export const adviceQuery = (param) =>
axios.post(`${proxyUrl1}/advice/query`, { param }); axios.post(`${proxyUrl1}/advice/query`, {
param
});
//下发医嘱 //下发医嘱
export const adviceAdd = (params) => export const adviceAdd = (params) =>
axios.post(`${proxyUrl1}/advice/add`, { ...params }); axios.post(`${proxyUrl1}/advice/add`, {
...params
});
//推送结果 //推送结果
export const messageQuery = (firstAidId) => export const messageQuery = (firstAidId) =>
axios.post(`${proxyUrl1}/message/query`, { firstAidId }); axios.post(`${proxyUrl1}/message/query`, {
firstAidId
});
export function uploadIdcard(data) { export function uploadIdcard(data) {
return axios({ return axios({
@ -68,27 +85,37 @@ export const idcardInfo = `${proxyUrl1}/sys/ocr/idcardInfo`;
// 创建急救身份证扫描 // 创建急救身份证扫描
export const idcardInfoBase64 = (picBase64) => export const idcardInfoBase64 = (picBase64) =>
axios.post(`${proxyUrl1}/sys/ocr/idcardInfoBase64`, { picBase64 }); axios.post(`${proxyUrl1}/sys/ocr/idcardInfoBase64`, {
picBase64
});
//知情同意新增 //知情同意新增
export const saveInformedConsent = (params) => export const saveInformedConsent = (params) =>
axios.post(`${proxyUrl1}/informed/saveInformedConsent`, { ...params }); axios.post(`${proxyUrl1}/informed/saveInformedConsent`, {
...params
});
// 查询是否有进行中的急救 // 查询是否有进行中的急救
export const queryFree = (params) => export const queryFree = (params) =>
axios.post(`${proxyUrl1}/firstAid/queryFree`, { ...params }); axios.post(`${proxyUrl1}/firstAid/queryFree`, {
...params
});
export const endFirstAid = (params) => export const endFirstAid = (params) =>
axios.post(`${proxyUrl1}/firstAid/endFirstAid `, {}); axios.post(`${proxyUrl1}/firstAid/endFirstAid `, {});
//知情同意查询 //知情同意查询
export const queryConsentResult = (params) => export const queryConsentResult = (params) =>
axios.post(`${proxyUrl1}/informed/queryConsentResult`, { axios.post(`${proxyUrl1}/informed/queryConsentResult`, {
param: { ...params }, param: {
...params
},
}); });
//查看知情同意时添加谈话时间 //查看知情同意时添加谈话时间
export const thTime = (params) => export const thTime = (params) =>
axios.post(`${proxyUrl1}/firstAid/thTime`, { ...params }); axios.post(`${proxyUrl1}/firstAid/thTime`, {
...params
});
// 上传文件 // 上传文件
export function uploadfile(data) { export function uploadfile(data) {
@ -115,7 +142,11 @@ export function uploadBase64(data) {
} }
// 查询平车状态 // 查询平车状态
export const queryByPadNo = (params) => export const queryByPadNo = (params) =>
axios.post(`${proxyUrl1}/car/queryByPadNo`, { param: { ...params } }); axios.post(`${proxyUrl1}/car/queryByPadNo`, {
param: {
...params
}
});
// 血样报告 // 血样报告
export const queryFirstAidInspectData = (params) => export const queryFirstAidInspectData = (params) =>
axios.post(`${proxyUrl1}/firstAid/queryFirstAidInspectData`, { axios.post(`${proxyUrl1}/firstAid/queryFirstAidInspectData`, {
@ -123,20 +154,34 @@ export const queryFirstAidInspectData = (params) =>
}); });
// 查询下一个节点 // 查询下一个节点
export const getNextNode = (params) => export const getNextNode = (params) =>
axios.post(`${proxyUrl1}/firstAid/next`, { param: { ...params } }); axios.post(`${proxyUrl1}/firstAid/next`, {
param: {
...params
}
});
//导出急救记录 //导出急救记录
export const exportFirstAid = (params) => export const exportFirstAid = (params) =>
axios.post(`${proxyUrl1}/firstAid/export`, { param: { ...params } }); axios.post(`${proxyUrl1}/firstAid/export`, {
param: {
...params
}
});
// 溶栓介入视频 // 溶栓介入视频
export const queryVideo = (param) => export const queryVideo = (param) =>
axios.post(`${proxyUrl1}/video/query`, { param: { ...param } }); axios.post(`${proxyUrl1}/video/query`, {
param: {
...param
}
});
// 溶栓介入视频 // 溶栓介入视频
export const queryBook = (param) => export const queryBook = (param) =>
axios.post(`${proxyUrl1}/informed/queryConsentTemplate`, { axios.post(`${proxyUrl1}/informed/queryConsentTemplate`, {
param: { ...param }, param: {
...param
},
}); });
// 溶栓介入视频 // 溶栓介入视频
@ -147,80 +192,125 @@ export const queryWeight = (firstAidId) =>
// 修改急救信息 // 修改急救信息
export const updateFirstAid = (params) => export const updateFirstAid = (params) =>
axios.post(`${proxyUrl1}/firstAid/update`, { param: { ...params } }); axios.post(`${proxyUrl1}/firstAid/update`, {
param: {
...params
}
});
// ------------平车相关操作------------ // ------------平车相关操作------------
// 授权 // 授权
export const remoteAuth = (params) => export const remoteAuth = (params) =>
axios.post(`${proxyUrl1}/mqtt/remoteAuth`, { ...params }); axios.post(`${proxyUrl1}/mqtt/remoteAuth`, {
...params
});
// 电池容量 // 电池容量
export const remoteKljCapacity = (params) => export const remoteKljCapacity = (params) =>
axios.post(`${proxyUrl1}/mqtt/remoteKljCapacity`, { ...params }); axios.post(`${proxyUrl1}/mqtt/remoteKljCapacity`, {
...params
});
// 设备重启 // 设备重启
export const remoteReboot = (params) => export const remoteReboot = (params) =>
axios.post( axios.post(
`${proxyUrl1}/mqtt/remoteReboot `${proxyUrl1}/mqtt/remoteReboot
`, `, {
{ ...params } ...params
}
); );
// 发送远程rfid消息 // 发送远程rfid消息
export const remoteRfid = (params) => export const remoteRfid = (params) =>
axios.post( axios.post(
`${proxyUrl1}/mqtt/remoteRfid `${proxyUrl1}/mqtt/remoteRfid
`, `, {
{ ...params } ...params
}
); );
// 发送远程设备心跳(校时)消息 // 发送远程设备心跳(校时)消息
export const remoteTime = (params) => export const remoteTime = (params) =>
axios.post( axios.post(
`${proxyUrl1}/mqtt/remoteTime `${proxyUrl1}/mqtt/remoteTime
`, `, {
{ ...params } ...params
}
); );
// 称重校准 // 称重校准
export const remoteWeightCalibration = (params) => export const remoteWeightCalibration = (params) =>
axios.post( axios.post(
`${proxyUrl1}/mqtt/remoteWeightCalibration `${proxyUrl1}/mqtt/remoteWeightCalibration
`, `, {
{ ...params } ...params
}
); );
// 病例统计 // 病例统计
export const getCtInfoPath = (params) => export const getCtInfoPath = (params) =>
axios.post(`${proxyUrl1}/firstAid/getCtInfoPath`, { ...params }); axios.post(`${proxyUrl1}/firstAid/getCtInfoPath`, {
...params
});
// 我的 // 我的
export const loginInfo = (params) => export const loginInfo = (params) =>
axios.post(`${proxyUrl1}/home/loginInfo`, { ...params } ); axios.post(`${proxyUrl1}/home/loginInfo`, {
...params
});
// RPT统计 // RPT统计
export const queryRptResult = (params) => export const queryRptResult = (params) =>
axios.post(`${proxyUrl1}/home/queryRptResult`, { ...params }); axios.post(`${proxyUrl1}/home/queryRptResult`, {
...params
});
// DPT统计 / 血管内治疗率 // DPT统计 / 血管内治疗率
export const queryDptResult = (params) => export const queryDptResult = (params) =>
axios.post(`${proxyUrl1}/home/queryDptResult`, { ...params }); axios.post(`${proxyUrl1}/home/queryDptResult`, {
...params
});
// 血管内治疗数据对比 // 血管内治疗数据对比
export const selectXgzl = (params) => export const selectXgzl = (params) =>
axios.post(`${proxyUrl1}/home/selectXgzl`, { ...params }); axios.post(`${proxyUrl1}/home/selectXgzl`, {
...params
});
// SICH发生率 // SICH发生率
export const querySichResult = (params) => export const querySichResult = (params) =>
axios.post(`${proxyUrl1}/home/querySichResult`, { ...params }); axios.post(`${proxyUrl1}/home/querySichResult`, {
...params
});
// SICHDNT分布 // SICHDNT分布
export const queryDntResult = (params) => export const queryDntResult = (params) =>
axios.post(`${proxyUrl1}/home/queryDntResult`, { ...params }); axios.post(`${proxyUrl1}/home/queryDntResult`, {
...params
});
// 静脉溶栓数据对比 / 静脉溶栓率 // 静脉溶栓数据对比 / 静脉溶栓率
export const queryJmrs = (params) => export const queryJmrs = (params) =>
axios.post(`${proxyUrl1}/home/queryJmrs`, { ...params }); axios.post(`${proxyUrl1}/home/queryJmrs`, {
...params
});
// 病例统计数据分析 // 病例统计数据分析
export const queryByDatePatient = (params) => export const queryByDatePatient = (params) =>
axios.post(`${proxyUrl1}/home/queryByDatePatient`, { ...params }); axios.post(`${proxyUrl1}/home/queryByDatePatient`, {
...params
});
// 病例统计 // 病例统计
export const queryPatient = (params) => export const queryPatient = (params) =>
axios.post(`${proxyUrl1}/home/queryPatient`, { ...params }); axios.post(`${proxyUrl1}/home/queryPatient`, {
// 介入手术记录/总报告 ...params
});
// 介入手术记录/总报告/DNT时间表
export const operationLog = (params) => export const operationLog = (params) =>
axios.post(`${proxyUrl1}/interfere/operationLog`, { ...params }); axios.post(`${proxyUrl1}/interfere/operationLog`, {
...params
});
// 创建急救
export const createFirstAid = (params) =>
axios.post(`${proxyUrl1}/firstAid/createFirstAid`, {
...params
});
export const createPatient = (params) =>
axios.post(`${proxyUrl1}/firstAid/createPatient`, {
...params
});
export const eduitPatient = (params) =>
axios.post(`${proxyUrl1}/firstAid/eduitPatient`, {
...params
});

11
src/api/login.js

@ -1,5 +1,14 @@
import axios from 'axios'; import axios from 'axios';
let { proxyUrl } = require('@/config/setting'); let {
proxyUrl
} = require('@/config/setting');
let proxyUrl1 = proxyUrl + '/workstation';
// 登录 // 登录
export const Login = (params) => export const Login = (params) =>
axios.post(`${proxyUrl}/auth/pad/login`, params); axios.post(`${proxyUrl}/auth/pad/login`, params);
export const Loginnew = (params) =>
axios.post(`${proxyUrl}/auth/login`, params);
// 登录
export const queryUser = (params) =>
axios.post(`${proxyUrl1}/sys/queryUsername`, params);

BIN
src/assets/images/login-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 KiB

BIN
src/assets/images/logo.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

6
src/assets/less/common.less

@ -756,7 +756,7 @@
.informed-item { .informed-item {
flex: 1; flex: 1;
display: flex; display: flex;
justify-content: space-between; // justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 15px; margin-bottom: 15px;
margin-right: 10px; margin-right: 10px;
@ -781,8 +781,8 @@
} }
.item-img { .item-img {
// width: 120px; min-width: 120px;
flex: 1; // flex: 1;
height: 40px; height: 40px;
display: flex; display: flex;
align-items: center; align-items: center;

2
src/config/setting.js

@ -28,7 +28,7 @@ const INDEX_SETTINGS = {
development: { development: {
//开发环境 //开发环境
apiUrl: 'http://116.204.114.73:10050/carbasics2024-yf-gateway/', // apiUrl: 'http://192.168.0.6:9002', apiUrl: 'http://116.204.114.73:10050/carbasics2024-yf-gateway/', // apiUrl: 'http://192.168.0.6:9002',
proxyUrl: '', proxyUrl: '/basic-api',
publicPath: '', publicPath: '',
imgUrl: 'http://116.204.114.73:20007', imgUrl: 'http://116.204.114.73:20007',
}, },

4
src/layouts/BasicLayout.less

@ -121,10 +121,8 @@
.ant-layout-content{ .ant-layout-content{
position: relative; position: relative;
// box-shadow: -2px 0px 8px rgba(238, 238, 238, 0.6); /* 左边阴影 */
.global-layout-content{ .global-layout-content{
height: calc(100vh - 6vw); height: calc(100vh - 5vw);
overflow-y: auto; overflow-y: auto;
padding: 10px; padding: 10px;
} }

6
src/layouts/BasicLayout.vue

@ -86,7 +86,7 @@
<div class="person-footer"> <div class="person-footer">
<a-button class="persion-footer-button person-footer-reset" block>修改密码</a-button> <a-button class="persion-footer-button person-footer-reset" block>修改密码</a-button>
<a-button class="persion-footer-button person-footer-logout" type="primary" <a-button class="persion-footer-button person-footer-logout" type="primary"
block>退出登录</a-button> block @click="logout" >退出登录</a-button>
</div> </div>
</div> </div>
</a-drawer> </a-drawer>
@ -188,9 +188,13 @@
}, },
onClose() { onClose() {
this.visible = false; this.visible = false;
console.log('ddd')
document.getElementById('globalLayoutContent').style.overflowY = 'auto'; document.getElementById('globalLayoutContent').style.overflowY = 'auto';
this.current = this.current_ this.current = this.current_
}, },
logout(){
this.$router.replace('/login')
}
} }
} }
</script> </script>

5
src/router/index.js

@ -58,6 +58,11 @@ const routes = [{
// } // }
] ]
}, },
{
name: 'Login',
path: '/login',
component: () => import('@/views/login/index')
}
// { // {
// path: '/404', // path: '/404',
// component: () => import('@/views/exception/404') // component: () => import('@/views/exception/404')

16
src/store/modules/patient/mutations.js

@ -8,25 +8,25 @@ const mutations = {
// 团注, 剂量, 每次进来复制为空 // 团注, 剂量, 每次进来复制为空
if (data.recordValDict) { if (data.recordValDict) {
if (!data.recordValDict['JMRS-TZJL']) { if (!data.recordValDict['JMRS-TZJL']) {
data.recordValDict['JMRS-TZJL'] = [ data.recordValDict['JMRS-TZJL'] = [{
{
questionCode: 'JMRS-TZJL', questionCode: 'JMRS-TZJL',
answer: [], answer: [],
}, }, ];
];
} }
if (!data.recordValDict['JMRS-JDJL']) { if (!data.recordValDict['JMRS-JDJL']) {
data.recordValDict['JMRS-JDJL'] = [ data.recordValDict['JMRS-JDJL'] = [{
{
questionCode: 'JMRS-JDJL', questionCode: 'JMRS-JDJL',
answer: [], answer: [],
}, }, ];
];
} }
} }
sessionStorage.setItem('patientData', JSON.stringify(data)); sessionStorage.setItem('patientData', JSON.stringify(data));
state.patientData = data; state.patientData = data;
}, },
setPatientDataCur(state, data) {
sessionStorage.setItem('patientDataCur', JSON.stringify(data));
state.patientDataCur = data;
},
setTimerData(state, data) { setTimerData(state, data) {
state.timerData = data; state.timerData = data;
}, },

1
src/store/modules/patient/state.js

@ -1,5 +1,6 @@
const state = { const state = {
patientData: {}, // 当前患者信息 patientData: {}, // 当前患者信息
patientDataCur: {}, // 当前患者信息
timerData: {}, // 计时数据 timerData: {}, // 计时数据
nextNodeData: {}, nextNodeData: {},
overviewType: '', overviewType: '',

31
src/store/modules/storm/actions.js

@ -1,16 +1,31 @@
import { Login } from '@/api/login.js'; import {
Loginnew
} from '@/api/login.js';
const actions = { const actions = {
toLogin({ commit, state }, { no }) { toLogin({
commit,
state
}, {
no
}) {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
try { try {
console.log('state', state.APP_DEVICE_NO)
console.log('no', no)
let padNo = state.APP_DEVICE_NO; let padNo = state.APP_DEVICE_NO;
if (!padNo) return; // if (!padNo) return;
const res = await Login({ const res = await Loginnew({
param: { ...no,
padNo, // param: {
}, // // padNo: '3333',
// ...no
// },
}); });
const { code, data, msg } = res; const {
code,
data,
msg
} = res;
if (code === 200) { if (code === 200) {
commit('setToken', data.access_token); commit('setToken', data.access_token);
resolve(data); resolve(data);

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

@ -1,45 +1,11 @@
<template> <template>
<div class="patient-detail"> <div class="patient-detail">
<!-- <div class="patient-dlist">
<patient-list ref="patientList" :column="1">
<template #default="{ item, index }">
<a-card class="patient-card" :class="{'active': item.firstAidId == patientData.firstAidId}"
hoverable @click="handleClickPatient(item, index)">
<div class="patient-card-header">
<div class="patient-avatar">
<img src="@/assets/images/pc.png" alt="" />
</div>
<div class="patient-info">
<div class="patient-name">{{item.patientName}}<span
class="age">{{item.patientAge}}</span></div>
<div class="patient-IDCard">{{utils.maskIDCard(item.patientIdCardNo)}}</div>
</div>
</div>
<div class="patient-card-body">
<div class="patient-card-row patient-card-row1">
<div class="patient-card-work">卒中</div>
<div class="patient-card-work">平车</div>
</div>
<div class="patient-card-row patient-card-row2">
<div class="patient-dept">
<div class="patient-card-label">分诊时间</div>
<div class="patient-card-text">{{item.firstAidTime.substring(0, 10)}}</div>
</div>
<div class="patient-reg">
<div class="patient-card-label">挂号时间</div>
<div class="patient-card-text">{{item.firstAidTime.substring(0, 10)}}</div>
</div>
</div>
</div>
</a-card>
</template>
</patient-list>
</div> -->
<div class="patient-info-box"> <div class="patient-info-box">
<a-card class="patient-info-card"> <a-card class="patient-info-card">
<div class="patient-info-header"> <div class="patient-info-header">
<div class="patient-info-header-title">患者基本信息</div> <div class="patient-info-header-title">患者基本信息</div>
<div class="patient-info-header-btn"><a-button @click="goEditPatient" v-if="!authEdit && firstAidId">编辑</a-button> <div class="patient-info-header-btn"><a-button @click="goEditPatient"
v-if="!authEdit && patientDataCur.id">编辑</a-button>
</div> </div>
</div> </div>
<div class="patient-info-body"> <div class="patient-info-body">
@ -50,7 +16,7 @@
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="姓名" prop="patientName1"> <a-form-model-item label="姓名" prop="patientName1">
<a-input v-model="form.patientName" placeholder="请输入姓名" v-if="authEdit"></a-input> <a-input v-model="form.patientName" placeholder="请输入姓名" v-if="authEdit"></a-input>
<div v-else class="edititem"> {{patientData.patientName}} </div> <div v-else class="edititem"> {{patientDataCur.patientName}} </div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@ -60,7 +26,7 @@
{{ item }} {{ item }}
</a-select-option> </a-select-option>
</a-select> </a-select>
<div v-else class="edititem"> {{patientData.patientNation}} </div> <div v-else class="edititem"> {{patientDataCur.patientNation}} </div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@ -70,29 +36,31 @@
<a-select-option :value="1"></a-select-option> <a-select-option :value="1"></a-select-option>
</a-select> </a-select>
<div v-else class="edititem"> <div v-else class="edititem">
<span v-if="patientData.patientGender == 0"></span> <span v-if="patientDataCur.patientGender == 0"></span>
<span v-else-if="patientData.patientGender == 1"></span> <span v-else-if="patientDataCur.patientGender == 1"></span>
</div> </div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="身高"> <a-form-model-item label="身高">
<a-input v-model="form.height" placeholder="请输入身高 (cm)" v-if="authEdit" /> <a-input v-model="form.height" placeholder="请输入身高 (cm)" v-if="authEdit" />
<div v-else class="edititem"> {{patientData.height}} </div> <div v-else class="edititem"> {{patientDataCur.height}} </div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="体重"> <a-form-model-item label="体重">
<a-input v-model="form.weight" placeholder="请输入体重 (kg)" v-if="authEdit" /> <a-input v-model="form.weight" placeholder="请输入体重 (kg)" v-if="authEdit" />
<div v-else class="edititem"> {{patientData.weight}} </div> <div v-else class="edititem"> {{patientDataCur.weight}} </div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="16"> <a-col :span="16">
<a-form-model-item label="身份证号" :label-col="{ span: 5 }" :wrapper-col="{ span: 19 }" <a-form-model-item label="身份证号" :label-col="{ span: 5 }" :wrapper-col="{ span: 19 }"
placeholder="请输入身份证号"> placeholder="请输入身份证号">
<keyboard placeHolder="" :index-num="indexNum" @keyboard-input="handleKeyBoard" <keyboard placeHolder="" :index-num="indexNum" @keyboard-input="handleKeyBoard"
:old-value="patientIdCardNo" v-if="authEdit" /> :old-value="form.patientIdCardNo" v-if="authEdit" />
<div v-else class="edititem">{{patientData.patientIdCardNo ? utils.maskIDCard(patientData.patientIdCardNo) : '-'}}</div> <div v-else class="edititem">
{{patientDataCur.patientIdCardNo ? utils.maskIDCard(patientDataCur.patientIdCardNo) : '-'}}
</div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="8" style="padding-top: 0.15vw;" v-if="authEdit"> <a-col :span="8" style="padding-top: 0.15vw;" v-if="authEdit">
@ -102,7 +70,7 @@
<a-form-model-item label="联系方式" :label-col="{ span: 5 }" :wrapper-col="{ span: 19 }" <a-form-model-item label="联系方式" :label-col="{ span: 5 }" :wrapper-col="{ span: 19 }"
placeholder="请输入联系方式"> placeholder="请输入联系方式">
<a-input v-model="form.contract" placeholder="请输入联系方式" v-if="authEdit" /> <a-input v-model="form.contract" placeholder="请输入联系方式" v-if="authEdit" />
<div v-else class="edititem">{{patientData.contract}}</div> <div v-else class="edititem">{{patientDataCur.contract}}</div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
@ -116,9 +84,9 @@
<a-select-option :value="2">创伤</a-select-option> <a-select-option :value="2">创伤</a-select-option>
</a-select> </a-select>
<div v-else class="edititem"> <div v-else class="edititem">
<span v-if="patientData.type == 0">卒中急救</span> <span v-if="patientDataCur.type == 0">卒中急救</span>
<span v-else-if="patientData.type == 1">胸痛</span> <span v-else-if="patientDataCur.type == 1">胸痛</span>
<span v-else-if="patientData.type == 2">创伤</span> <span v-else-if="patientDataCur.type == 2">创伤</span>
</div> </div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
@ -129,26 +97,22 @@
<a-select-option :value="1"></a-select-option> <a-select-option :value="1"></a-select-option>
</a-select> --> </a-select> -->
<a-select v-model="form.carNo" placeholder="请选择平车号" v-if="authEdit"> <a-select v-model="form.carNo" placeholder="请选择平车号" v-if="authEdit">
<a-select-option <a-select-option v-for="item in carList" :key="item.id" :value="item.deviceNo">
v-for="item in carList"
:key="item.id"
:value="item.deviceNo"
>
{{ item.deviceNo }} {{ item.deviceNo }}
</a-select-option> </a-select-option>
</a-select> </a-select>
<div v-else class="edititem">{{patientData.carNo}}</div> <div v-else class="edititem">{{patientDataCur.carNo}}</div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="绿道状态" :label-col="{ span: 7 }" :wrapper-col="{ span: 16 }"> <a-form-model-item label="绿道状态" :label-col="{ span: 7 }" :wrapper-col="{ span: 16 }">
<a-switch v-model="form.greenRoadFlag" v-if="authEdit" /> <a-switch v-model="form.greenRoadFlag" v-if="authEdit" />
<div v-else class="edititem">{{patientData.greenRoadFlag}}</div> <div v-else class="edititem">{{patientDataCur.greenRoadFlag}}</div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12" v-if="!authEdit"> <a-col :span="12" v-if="!authEdit">
<a-form-model-item label="BMI"> <a-form-model-item label="BMI">
<div class="edititem">{{patientData.BMI}}</div> <div class="edititem">{{patientDataCur.BMI}}</div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
@ -185,7 +149,10 @@
create, create,
uploadIdcard, uploadIdcard,
idcardInfo, idcardInfo,
idcardInfoBase64 idcardInfoBase64,
createFirstAid,
createPatient,
eduitPatient
} from 'api'; } from 'api';
export default { export default {
data() { data() {
@ -213,14 +180,13 @@
}, },
computed: { computed: {
...mapState('storm', ['nationList', 'APP_DEVICE_NO']), ...mapState('storm', ['nationList', 'APP_DEVICE_NO']),
...mapState('patient', ['patientData', 'timerData']), ...mapState('patient', ['patientData', 'timerData', 'patientDataCur']),
}, },
async created() { async created() {
}, },
watch:{ watch: {
patientData() { patientData() {
console.log('watch patientdata')
const { const {
firstAidId firstAidId
} = this.patientData; } = this.patientData;
@ -240,11 +206,49 @@
goPatientList() { goPatientList() {
this.$emit('change', 'patient-list') this.$emit('change', 'patient-list')
}, },
goNext() { async goNext(e) {
e.preventDefault();
this.$refs.ruleForm.validate(async (valid) => {
if (valid) {
this.confirmLoading = true;
// const reg =
// /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
// if (!reg.test(this.patientIdCardNo) && this.patientIdCardNo) {
// this.$message.error('');
// return;
// }
// if (typeof this.firstAidData.greenRoadFlag == 'boolean') {
// this.firstAidData.greenRoadFlag = 0;
// }
let res = await create({
param: {
...this.patientDataCur,
// patientIdCardNo: "142422199802281819",
// identityNo: "142422199802281819",
},
});
const {
data,
code,
msg
} = res;
if (code === 200) {
this.setPatientData({ ...this.patientDataCur, firstAidId: data.firstAidId })
this.authEdit = false
this.$message.success('更新成功');
this.$router.push('/firstaid/thrombolysis') this.$router.push('/firstaid/thrombolysis')
// this.$emit('on-success', data);
}
this.confirmLoading = false;
}
});
// this.$router.push('/firstaid/thrombolysis')
}, },
goEditPatient() { goEditPatient() {
this.form = JSON.parse(JSON.stringify(this.patientData)) this.form = JSON.parse(JSON.stringify(this.patientDataCur))
this.authEdit = true this.authEdit = true
}, },
handleCancel() { handleCancel() {
@ -262,15 +266,16 @@
if (!reg.test(this.patientIdCardNo) && this.patientIdCardNo) { if (!reg.test(this.patientIdCardNo) && this.patientIdCardNo) {
this.$message.error('身份证格式不正确'); this.$message.error('身份证格式不正确');
this.confirmLoading = false;
return; return;
} }
if (typeof this.firstAidData.greenRoadFlag == 'boolean') { // if (typeof this.firstAidData.greenRoadFlag == 'boolean') {
this.firstAidData.greenRoadFlag = 0; // this.firstAidData.greenRoadFlag = 0;
} // }
let res = await create({ let res = await eduitPatient({
param: { param: {
...this.form, ...this.patientDataCur,
patientIdCardNo: this.patientIdCardNo, // patientIdCardNo: this.patientIdCardNo,
}, },
}); });
@ -283,6 +288,7 @@
this.setPatientData(this.form) this.setPatientData(this.form)
this.authEdit = false this.authEdit = false
this.$message.success('更新成功'); this.$message.success('更新成功');
// this.$router.push('/firstaid/thrombolysis')
this.$emit('on-success', data); this.$emit('on-success', data);
} }
this.confirmLoading = false; this.confirmLoading = false;

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

@ -4,7 +4,7 @@
<a-list :data-source="list" :grid="{ gutter: 16, column }"> <a-list :data-source="list" :grid="{ gutter: 16, column }">
<a-list-item slot="renderItem" slot-scope="item, index"> <a-list-item slot="renderItem" slot-scope="item, index">
<slot :item="item" :index="index"> <slot :item="item" :index="index">
<a-card class="patient-card" :class="{'active': item.id == patientData.firstAidId}" hoverable <a-card class="patient-card" :class="{'active': item.id == patientDataCur.id}" hoverable
@click="checkPaitent(item, index)"> @click="checkPaitent(item, index)">
<div class="patient-card-header"> <div class="patient-card-header">
<div class="patient-avatar"> <div class="patient-avatar">
@ -21,7 +21,8 @@
<div class="patient-card-body"> <div class="patient-card-body">
<div class="patient-card-row patient-card-row2"> <div class="patient-card-row patient-card-row2">
<div class="patient-card-label" style="margin-right: 15px;"> <div class="patient-card-label" style="margin-right: 15px;">
{{item.type==0?'卒中':item.type==1?'胸痛':item.type==2?'创伤':''}}</div> {{item.type==0?'卒中':item.type==1?'胸痛':item.type==2?'创伤':''}}
</div>
<div class="patient-card-label">{{item.carNo}}</div> <div class="patient-card-label">{{item.carNo}}</div>
</div> </div>
<div class="patient-card-row patient-card-row2"> <div class="patient-card-row patient-card-row2">
@ -84,17 +85,17 @@
pageSize: 15, pageSize: 15,
total: 0, total: 0,
}, },
listShow: true, listShow: true
} }
}, },
created() { created() {
// console.log('patient-list start') // console.log('patient-list start')
}, },
computed: { computed: {
...mapState('patient', ['patientData']), ...mapState('patient', ['patientData', 'patientDataCur']),
}, },
methods: { methods: {
...mapMutations('patient', ['setPatientData']), ...mapMutations('patient', ['setPatientData', 'setPatientDataCur']),
handleInfiniteOnLoad() { handleInfiniteOnLoad() {
if (this.listShow) { if (this.listShow) {
this.getData(); this.getData();
@ -140,8 +141,11 @@
this.list = [...this.list, ...data.list]; this.list = [...this.list, ...data.list];
} }
const pdata = this.list[0] const pdata = this.list[0]
console.log('pdata', pdata)
if (pdata?.firstAidId) { if (pdata?.firstAidId) {
this.home.queryAid(pdata.firstAidId, false); this.home.queryAid(pdata.firstAidId, false);
} else {
this.checkPaitent(pdata, 0)
} }
// if (!type) { // if (!type) {
// this.getNation(); // this.getNation();
@ -184,15 +188,13 @@
visitNo, visitNo,
weight, weight,
} = item; } = item;
this.setPatientData({ this.setPatientDataCur({
patientName: name, patientName: name,
patientAge: this.utils.calculateAge(identityNo), patientAge: this.utils.calculateAge(identityNo),
patientGender: sex, patientGender: sex,
patientNation: nation, patientNation: nation,
patientIdCardNo: identityNo, patientIdCardNo: identityNo,
contract: contactPhone, contract: contactPhone,
firstAidId: id,
address, address,
birthday, birthday,
carNo, carNo,
@ -222,7 +224,17 @@
visitNo, visitNo,
weight, weight,
}); });
this.$emit('change', 'patient-detail') // this.$emit('change', 'patient-detail')
this.firstAidData = {
...item,
patientName: name,
patientAge: this.utils.calculateAge(identityNo),
patientGender: sex,
patientNation: nation,
patientIdCardNo: identityNo,
contract: contactPhone,
}
this.$emit('change', this.firstAidData)
} }
} }
} }
@ -231,7 +243,7 @@
<style lang="less" scoped> <style lang="less" scoped>
// //
.patient-list { .patient-list {
height: calc(100vh - 220px); height: calc(100vh - 200px);
overflow-y: auto; overflow-y: auto;
} }

200
src/views/Patient/index.vue

@ -10,52 +10,29 @@
<div class="patient-box"> <div class="patient-box">
<div class="patient-list-item"> <div class="patient-list-item">
<div class="search-box"> <div class="search-box">
<a-input <a-input placeholder="姓名 (支持拼音、首拼、关键字)" style="width: 100%" size="large" v-model="searchVal"
placeholder="姓名 (支持拼音、首拼、关键字)" @pressEnter="onSearch" allowClear>
style="width: 100%" <a-icon slot="prefix" type="search" @click="onSearch" />
size="large"
v-model="searchVal"
@pressEnter="onSearch"
allowClear
>
<a-icon
slot="prefix"
type="search"
@click="onSearch"
/>
</a-input> </a-input>
</div> </div>
<patient-list ref="patientList" @change="changeComponent" :column="1"></patient-list> <patient-list ref="patientList" @change="changeComponent" :column="1"></patient-list>
</div> </div>
<div class="patient-detail"> <div class="patient-detail">
<patient-detail ref="patientList" <patient-detail ref="patientList" :firstAidData="firstAidData" :carList="carList" :carNo="carNo"
:firstAidData="firstAidData" @change="changeComponent"></patient-detail>
:carList="carList"
:carNo="carNo" @change="changeComponent" ></patient-detail>
</div> </div>
</div> </div>
<PatientCreate <PatientCreate ref="patientCreate" @on-success="onSearch" :firstAidData="firstAidData" :carList="carList"
ref="patientCreate" :carNo="carNo" />
@on-success="onSearch"
:firstAidData="firstAidData"
:carList="carList"
:carNo="carNo"
/>
<!-- 平车状态按钮 --> <!-- 平车状态按钮 -->
<Dragger ref="pc" class="pc-dragger"> <Dragger ref="pc" class="pc-dragger">
<img src="@/assets/images/pc.png" alt="" @click="pcVisible = true" /> <img src="@/assets/images/pc.png" alt="" @click="pcVisible = true" />
</Dragger> </Dragger>
<!-- 平车弹窗 --> <!-- 平车弹窗 -->
<a-modal <a-modal :width="700" :destroyOnClose="true" v-model="pcVisible" @ok="pcVisible = false" :footer="null">
:width="700"
:destroyOnClose="true"
v-model="pcVisible"
@ok="pcVisible = false"
:footer="null"
>
<div class="pc-container"> <div class="pc-container">
<div class="pc-no"> <div class="pc-no">
<div class="pc-num">{{ pcData.carNo }}</div> <div class="pc-num">{{ pcData.carNo }}</div>
@ -114,33 +91,16 @@
</div> </div>
</div> </div>
<div class="pc-list"> <div class="pc-list">
<a-button <a-button v-for="(item, index) in mqttBut" :key="index" class="mr-2"
v-for="(item, index) in mqttBut" @click="handleMqtt(index + 1)">{{ item }}</a-button>
:key="index"
class="mr-2"
@click="handleMqtt(index + 1)"
>{{ item }}</a-button
>
</div> </div>
</div> </div>
</a-modal> </a-modal>
<a-modal <a-modal class="patient-create patient-form" :width="600" :destroyOnClose="true" v-model="mqttShow"
class="patient-create patient-form" @ok="pcVisible = false" :footer="null" :title="mqttBut[form.type - 1]">
:width="600" <a-form class="div-form" :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 18 }">
:destroyOnClose="true"
v-model="mqttShow"
@ok="pcVisible = false"
:footer="null"
:title="mqttBut[form.type - 1]"
>
<a-form
class="div-form"
:form="form"
:label-col="{ span: 5 }"
:wrapper-col="{ span: 18 }"
>
<a-form-item label="设备编号"> <a-form-item label="设备编号">
<a-input v-model="form.deviceNo" /> <a-input v-model="form.deviceNo" />
</a-form-item> </a-form-item>
@ -148,12 +108,7 @@
<div v-if="form.type == 1"> <div v-if="form.type == 1">
<a-form-item label="时间"> <a-form-item label="时间">
<!-- <a-input v-model="form.time" /> --> <!-- <a-input v-model="form.time" /> -->
<a-date-picker <a-date-picker class="div-picker" @change="onChange" show-time format="YYYY-MM-DD HH:mm:ss">
class="div-picker"
@change="onChange"
show-time
format="YYYY-MM-DD HH:mm:ss"
>
<template slot="renderExtraFooter"> </template> <template slot="renderExtraFooter"> </template>
</a-date-picker> </a-date-picker>
</a-form-item> </a-form-item>
@ -191,10 +146,7 @@
</a-form-item> </a-form-item>
</div> </div>
<a-form-item :wrapper-col="{ span: 12, offset: 5 }"> <a-form-item :wrapper-col="{ span: 12, offset: 5 }">
<a-button <a-button type="primary" @click="handleMqttSubmit(form.type)">
type="primary"
@click="handleMqttSubmit(form.type)"
>
确认 确认
</a-button> </a-button>
</a-form-item> </a-form-item>
@ -204,12 +156,16 @@
</template> </template>
<script> <script>
import { mapState, mapActions, mapMutations } from 'vuex'; import {
import PatientCreate from './components/patient-create.vue'; mapState,
import PatientList from './components/patient-list.vue'; mapActions,
import PatientDetail from './components/patient-detail.vue'; mapMutations
import Dragger from '@/components/dragger.vue'; } from 'vuex';
import { import PatientCreate from './components/patient-create.vue';
import PatientList from './components/patient-list.vue';
import PatientDetail from './components/patient-detail.vue';
import Dragger from '@/components/dragger.vue';
import {
getNation, getNation,
queryByPadNo, queryByPadNo,
selectList, selectList,
@ -222,8 +178,8 @@ import {
queryVideo, queryVideo,
queryBook, queryBook,
messageQuery messageQuery
} from 'api/index.js'; } from 'api/index.js';
export default { export default {
name: 'Index', name: 'Index',
components: { components: {
PatientCreate, PatientCreate,
@ -292,7 +248,11 @@ export default {
deviceType: 0, deviceType: 0,
}, },
}); });
const { data, code, msg } = res; const {
data,
code,
msg
} = res;
if (code === 200) { if (code === 200) {
this.carList = data.list; this.carList = data.list;
this.carNo = this.carList[0]?.deviceNo || ''; // this.carNo = this.carList[0]?.deviceNo || ''; //
@ -303,7 +263,11 @@ export default {
// //
async getNation() { async getNation() {
let res = await getNation(); let res = await getNation();
const { data, code, msg } = res; const {
data,
code,
msg
} = res;
if (code === 200) { if (code === 200) {
this.nationList = data; this.nationList = data;
this.setNationList(data); this.setNationList(data);
@ -312,7 +276,11 @@ export default {
// //
async queryByPadNo() { async queryByPadNo() {
const res = await queryByPadNo(); const res = await queryByPadNo();
const { data, code, msg } = res; const {
data,
code,
msg
} = res;
if (code === 200) { if (code === 200) {
this.pcData = data; this.pcData = data;
} else { } else {
@ -320,8 +288,9 @@ export default {
} }
}, },
// //
changeComponent(c){ changeComponent(item) {
this.component = c // this.component = c
// this.firstAidData = item
}, },
async handleMqttSubmit(type) { async handleMqttSubmit(type) {
@ -341,7 +310,11 @@ export default {
} else if (type == 6) { } else if (type == 6) {
res = await remoteRfid(formData); res = await remoteRfid(formData);
} }
const { code, msg, data } = res; const {
code,
msg,
data
} = res;
if (code === 200) { if (code === 200) {
this.mqttShow = false; this.mqttShow = false;
this.$message.success('操作成功'); this.$message.success('操作成功');
@ -353,12 +326,23 @@ export default {
this.form = {}; this.form = {};
let deviceNo = this.pcData.carNo; let deviceNo = this.pcData.carNo;
const formStructures = { const formStructures = {
1: { time: '' }, // 1: {
2: { index: '', kg: '' }, // time: ''
3: { capacity: '' }, // }, //
4: { needAuthFlag: '' }, // 2: {
index: '',
kg: ''
}, //
3: {
capacity: ''
}, //
4: {
needAuthFlag: ''
}, //
5: {}, // 5: {}, //
6: { rfidNo: '' }, // rfid 6: {
rfidNo: ''
}, // rfid
}; };
this.form = { this.form = {
type, type,
@ -370,29 +354,42 @@ export default {
async queryVideo() { async queryVideo() {
let res = await queryVideo(); let res = await queryVideo();
const { data, code, msg } = res; const {
data,
code,
msg
} = res;
if (code === 200) { if (code === 200) {
this.setVideo(data.list); this.setVideo(data.list);
} }
}, },
async queryBook() { async queryBook() {
let res = await queryBook(); let res = await queryBook();
const { data, code, msg } = res; const {
data,
code,
msg
} = res;
console.log(data) console.log(data)
if (code === 200) { if (code === 200) {
this.setBook(data); this.setBook(data);
} }
}, },
async getMessageQuery() { async getMessageQuery() {
const { firstAidId } = this.patientData; const {
firstAidId
} = this.patientData;
const res = await messageQuery(firstAidId); const res = await messageQuery(firstAidId);
const { code, msg } = res; const {
code,
msg
} = res;
if (code === 200) { if (code === 200) {
this.setTimerData(res.data); this.setTimerData(res.data);
} }
}, },
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@ -400,29 +397,31 @@ export default {
// padding: 10px; // padding: 10px;
// //
.search-box{ .search-box {
margin-bottom: 10px; margin-bottom: 10px;
} }
// //
.operater-box{ .operater-box {
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
width: 100%; width: 100%;
background-color: #fff; background-color: #fff;
margin-bottom: .2rem; margin-bottom: .2rem;
.operater-title{
.operater-title {
font-size: 1rem; font-size: 1rem;
font-weight: bold; font-weight: bold;
line-height: 1.6rem; line-height: 1.6rem;
} }
} }
.patient-box{ .patient-box {
display: flex; display: flex;
background-color: #fff; background-color: #fff;
.patient-list-item{
.patient-list-item {
background-color: #fff; background-color: #fff;
border-radius: 0.2rem; border-radius: 0.2rem;
border-radius: 0.2rem; border-radius: 0.2rem;
@ -431,56 +430,67 @@ export default {
margin-right: 12px; margin-right: 12px;
padding: 12px; padding: 12px;
} }
.patient-detail{
.patient-detail {
flex: 2; flex: 2;
} }
} }
.pc-dragger{ .pc-dragger {
width: 3rem; width: 3rem;
height: 3rem; height: 3rem;
img{
img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
} }
.pc-container { .pc-container {
text-align: center; text-align: center;
.pc-no { .pc-no {
font-size: 24px; font-size: 24px;
font-weight: bold; font-weight: bold;
font-family: OPPOSans-B; font-family: OPPOSans-B;
color: #3e3d4d; color: #3e3d4d;
.status { .status {
font-size: 20px; font-size: 20px;
font-family: OPPOSans-R; font-family: OPPOSans-R;
color: #70798c; color: #70798c;
padding-top: 10px; padding-top: 10px;
&.active { &.active {
color: #7690e5; color: #7690e5;
} }
} }
} }
.pc-list { .pc-list {
padding: 30px 0; padding: 30px 0;
display: flex; display: flex;
.pc-list-item { .pc-list-item {
background: #f6f6f9; background: #f6f6f9;
border-radius: 6px; border-radius: 6px;
padding: 6px 24px; padding: 6px 24px;
font-size: 20px; font-size: 20px;
&:not(:last-child) { &:not(:last-child) {
margin-right: 10px; margin-right: 10px;
} }
} }
.item-dash { .item-dash {
width: 15px; width: 15px;
height: 15px; height: 15px;
border-radius: 50%; border-radius: 50%;
margin: 8px auto 5px; margin: 8px auto 5px;
background: #3e3d4d; background: #3e3d4d;
&.active { &.active {
background: #7690e5; background: #7690e5;
} }

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

@ -1,7 +1,7 @@
<template> <template>
<a-modal class="doc-report" width="85%" destroyOnClose :footer="null" v-model="visible" title="报告单"> <a-modal class="doc-report" width="85%" destroyOnClose :footer="null" v-model="visible" title="报告单">
<div class="doc-report-content"> <div class="doc-report-content">
<ThromReport v-if="visible"></ThromReport> <ThromReport reportType="modal" :dataSource="dataSource" v-if="visible"></ThromReport>
</div> </div>
</a-modal> </a-modal>
</template> </template>
@ -18,6 +18,7 @@
name: 'DocReport', name: 'DocReport',
data() { data() {
return { return {
dataSource: {},
visible: false visible: false
} }
}, },
@ -25,7 +26,8 @@
ThromReport ThromReport
}, },
methods: { methods: {
open() { open(item) {
this.dataSource = item
this.visible = true this.visible = true
} }
} }

28
src/views/document/index.vue

@ -290,20 +290,20 @@
this.getData(1) this.getData(1)
}, },
checkReport(item, modalRef) { checkReport(item, modalRef) {
const { // const {
sourceId, // sourceId,
patientName, // patientName,
patientAge, // patientAge,
patientGender, // patientGender,
firstAidId, // firstAidId,
} = item; // } = item;
this.setPatientData({ // this.setPatientData({
sourceId, // sourceId,
patientName, // patientName,
patientAge, // patientAge,
patientGender, // patientGender,
firstAidId, // firstAidId,
}); // });
this.$refs[modalRef].open(item) this.$refs[modalRef].open(item)
} }
} }

182
src/views/login/index.vue

@ -0,0 +1,182 @@
<template>
<div class="login-page">
<div class="login-left">
<div class="login-left-head">
<div class="login-head-logo"><img src="@/assets/images/logo.jpg" alt="" /></div>
<div class="login-head-title">卒中医生工作站</div>
</div>
<div class="login-left-bg">
<img src="@/assets/images/login-bg.png" alt="" />
</div>
</div>
<div class="login-right">
<div class="login-right-inner">
<div class="login-subflex"></div>
<div class="login-form">
<div class="login-form-title">欢迎登录</div>
<div class="login-form-container">
<a-form-model :model="form">
<a-form-model-item>
<a-select v-model="form.username" placeholder="选择账号" size="large">
<a-select-option v-for="u in userlist"
:value="u.username">{{u.username}}</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-input v-model="form.password" placeholder="请输入密码" size="large" />
</a-form-model-item>
<a-form-model-item>
<div style="display: flex;">
<div style="flex: 1;margin-right: 12px;">
<a-input v-model="form.code" placeholder="请输入验证吗" size="large" />
</div>
<div>
<a-button type="primary" size="large">发送验证码</a-button>
</div>
</div>
</a-form-model-item>
<a-form-model-item>
<a-checkbox v-model="form.pwd">记住我</a-checkbox>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" block size="large" @click="login">登录</a-button>
</a-form-model-item>
</a-form-model>
</div>
</div>
<div class="login-subflex"></div>
</div>
</div>
</div>
</template>
<script>
import {
mapState,
mapActions,
mapMutations
} from 'vuex';
import {
Login,
queryUser
} from 'api/login';
export default {
name: "Login",
data() {
return {
userlist: [],
form: {
username: 'admin',
password: 'Sxinf18aA!',
code: '1'
}
}
},
created() {
this.queryUser()
},
methods: {
...mapActions('storm', ['toLogin']),
async login() {
let res = await this.toLogin({
no: {
...this.form,
// uuid: '7a996ab78a784c9cad3cf16d1b4b3d81',
},
});
this.$router.replace('/firstaid/patientList?deviceNo=P000001')
},
async queryUser() {
let res = await queryUser();
this.userlist = res.data
}
}
}
</script>
<style lang="less" scoped>
.login-page {
display: flex;
width: 100vw;
height: 100vh;
overflow: hidden;
background-color: #fff;
.login-left {
flex: 4;
display: flex;
flex-direction: column;
.login-left-head {
flex: 1;
height: 100%;
display: flex;
padding: 0 2.5rem;
min-height: 25vh;
// justify-content: center;
align-items: center;
.login-head-logo {
img {
width: 3rem;
height: 3rem;
}
margin-right: 1rem;
}
.login-head-title {
font-size: 1.6rem;
color: #007AFF;
}
}
.login-left-bg {
img {
width: 100%;
height: 100%;
}
}
}
.login-right {
flex: 5;
.login-right-inner {
height: 100vh;
display: flex;
flex-direction: column;
padding: 0 8rem;
box-sizing: border-box;
.login-subflex {
flex: 1;
}
.login-form {
.login-form-title {
line-height: 6rem;
font-size: 2.6rem;
font-weight: bold;
padding: 0 1rem;
}
.login-form-container {}
}
}
}
}
</style>
<style lang="less">
.login-page {
.ant-form .ant-form-item {
border: none;
}
}
</style>

53
src/views/statistics/index.vue

@ -255,7 +255,7 @@
// - // -
async getData1() { async getData1() {
const res = await queryPatient({param: this.queryParams1}) const res = await queryPatient({param: this.queryParams1})
const { onlyRs = 0, onlyXgzl = 0, unRs = 0, xgzl = 0} = res.data const { onlyRs = 0, onlyXgzl = 0, both = 0, neither = 0} = res.data
var series = [{ var series = [{
value: onlyRs, value: onlyRs,
name: '仅溶栓人数' name: '仅溶栓人数'
@ -265,12 +265,12 @@
name: '仅介入人数' name: '仅介入人数'
}, },
{ {
value: unRs, value: both,
name: '溶栓且介入人数' name: '溶栓且介入人数'
}, },
{ {
value: xgzl, value: neither,
name: '溶栓且未介入人数' name: '溶栓且未介入人数'
} }
] ]
@ -333,8 +333,8 @@
var filed = "" var filed = ""
if(i == '仅溶栓人数') filed = "onlyRs" if(i == '仅溶栓人数') filed = "onlyRs"
else if(i == '仅介入人数') filed = "onlyXgzl" else if(i == '仅介入人数') filed = "onlyXgzl"
else if(i == '溶栓且介入人数') filed = "unRs" else if(i == '溶栓且介入人数') filed = "both"
else if(i == '溶栓且未介入人数') filed = "xgzl" else if(i == '溶栓且未介入人数') filed = "neither"
newlist.forEach(a => { newlist.forEach(a => {
var itemdata = { var itemdata = {
value: a[filed], value: a[filed],
@ -387,7 +387,7 @@
type: 'bar', type: 'bar',
barWidth: 5, barWidth: 5,
data: newlist.map(a => ({ data: newlist.map(a => ({
value: a['gailv'], value: a['decimal'],
itemStyle: { itemStyle: {
borderRadius: [20, 20, 0, 0] borderRadius: [20, 20, 0, 0]
} }
@ -418,30 +418,43 @@
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
const res = await queryJmrs({param: this.queryParams2}) const res = await queryJmrs({param: this.queryParams2})
const list = res.data
var items = ['静脉溶栓人数', '急救特征人数']
var xdata = []; var xdata = [];
const newlist = res.data.map(a => { var series = [];
const newlist = list.map(a => {
xdata.push(dayjs(a.time).format('YYYY-MM-DD')) xdata.push(dayjs(a.time).format('YYYY-MM-DD'))
return { ...a, time: dayjs(a.time).format('YYYY-MM-DD') } return { ...a, time: dayjs(a.time).format('YYYY-MM-DD') }
}) })
items.forEach(i => {
var series = [{ var item = {
type: 'line', type: 'line',
areaStyle: {}, areaStyle: {},
data: newlist.map(a => ({ data: [],
value: a['total'], }
var filed = ""
if(i == '静脉溶栓人数') filed = "gailv"
else if(i == '急救特征人数') filed = "total"
newlist.forEach(a => {
var itemdata = {
value: a[filed],
itemStyle: { itemStyle: {
borderRadius: [20, 20, 0, 0] borderRadius: [20, 20, 0, 0]
} }
})) }
}]; item.data.push(itemdata)
})
series.push(item)
})
var option = { var option = {
title: { title: {
text: '数据对比', text: '数据对比',
left: 'left' left: 'left'
}, },
color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], color: ['#008660', '#6F7FF6', '#F3D37C', '#5AD0A5'],
legend: { legend: {
left: 'right' left: 'right'
}, },
@ -473,7 +486,7 @@
type: 'line', type: 'line',
areaStyle: {}, areaStyle: {},
data: newlist.map(a => ({ data: newlist.map(a => ({
value: a['bfNum'], value: a['decimal'],
itemStyle: { itemStyle: {
borderRadius: [20, 20, 0, 0] borderRadius: [20, 20, 0, 0]
} }
@ -501,7 +514,7 @@
option && myChart.setOption(option); option && myChart.setOption(option);
}, },
// - DBT // - DNT
async getData6() { async getData6() {
var chartDom = this.$refs.jmrsboxrb var chartDom = this.$refs.jmrsboxrb
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom);
@ -640,8 +653,8 @@
data: [], data: [],
} }
var filed = "" var filed = ""
if(i == '桥接治疗人数') filed = "bfNum" if(i == '桥接治疗人数') filed = "qiaojie"
else if(i == '非桥接治疗人数') filed = "decimal" else if(i == '非桥接治疗人数') filed = "falseQiaojie"
newlist.forEach(a => { newlist.forEach(a => {
var itemdata = { var itemdata = {
value: a[filed], value: a[filed],

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

@ -171,7 +171,6 @@ export default{
await this.home.updateAidCode({ await this.home.updateAidCode({
codeAndAnswerList, codeAndAnswerList,
}, false); }, false);
console.log(res)
this.$emit('next') this.$emit('next')
}); });

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

@ -137,8 +137,8 @@ export default {
if (code === 200) { if (code === 200) {
data.forEach((item) => { data.forEach((item) => {
// "0.48.0" // "0.48.0"
let q = item.referenceValue.split('~')[0]; let q = item.referenceValue?.split('~')[0];
let h = item.referenceValue.split('~')[1]; let h = item.referenceValue?.split('~')[1];
// item.testResult // item.testResult
if (item.testResult - 0 > h - 0) { if (item.testResult - 0 > h - 0) {
item.testResultType = 's'; item.testResultType = 's';

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

@ -15,9 +15,7 @@
<div class="item-img" v-if="informed.patientSign" @click="lookSign(informed.patientSign)"> <div class="item-img" v-if="informed.patientSign" @click="lookSign(informed.patientSign)">
<img :src="apiUrl + informed.patientSign" alt="" /> <img :src="apiUrl + informed.patientSign" alt="" />
</div> </div>
<div class="item-img item-img-black" v-else> <div class="item-img" v-else></div>
签名安全区
</div>
<a-button :disabled="writeAble" shape="round" class="item-btn" <a-button :disabled="writeAble" shape="round" class="item-btn"
@click="patientSign = !patientSign"> @click="patientSign = !patientSign">
{{ informed.patientSign ? '重新签名' : '点击签名' }} {{ informed.patientSign ? '重新签名' : '点击签名' }}
@ -43,9 +41,7 @@
<div class="item-img" v-if="informed.empowerSign" @click="lookSign(informed.empowerSign)"> <div class="item-img" v-if="informed.empowerSign" @click="lookSign(informed.empowerSign)">
<img :src="apiUrl + informed.empowerSign" alt="" /> <img :src="apiUrl + informed.empowerSign" alt="" />
</div> </div>
<div class="item-img item-img-black" v-else> <div class="item-img" style="min-width: 110px;" v-else> </div>
签名安全区
</div>
<a-button :disabled="writeAble" type="continue" shape="round" class="item-btn" <a-button :disabled="writeAble" type="continue" shape="round" class="item-btn"
@click="empowerSign = !empowerSign">{{ @click="empowerSign = !empowerSign">{{
informed.empowerSign ? '重新签名' : '点击签名' informed.empowerSign ? '重新签名' : '点击签名'
@ -80,9 +76,7 @@
<div class="item-img" v-if="informed.doctorSign" @click="lookSign(informed.doctorSign)"> <div class="item-img" v-if="informed.doctorSign" @click="lookSign(informed.doctorSign)">
<img :src="apiUrl + informed.doctorSign" alt="" /> <img :src="apiUrl + informed.doctorSign" alt="" />
</div> </div>
<div class="item-img item-img-black" v-else> <div class="item-img" v-else> </div>
签名安全区
</div>
<a-button :disabled="writeAble" type="continue" shape="round" class="item-btn" <a-button :disabled="writeAble" type="continue" shape="round" class="item-btn"
@click="doctorSign = !doctorSign">{{ @click="doctorSign = !doctorSign">{{
informed.doctorSign informed.doctorSign

54
src/views/thrombolysis/components/throm-report-dnt.vue

@ -0,0 +1,54 @@
<template>
<a-modal class="doc-ct" width="85%" destroyOnClose :footer="null" v-model="visible" title="DNT时间表">
<div class="doc-ct-content">
<div v-if="dataSource.length">
<div v-for="item in dataSource">
{{item.dcmPath}}
</div>
</div>
<div class="emtpy" v-else>
<a-empty :image="emptyImage" description="未检测到影像信息" />
</div>
</div>
</a-modal>
</template>
<script>
import emptyImage from '@/assets/images/slice/empty.png'
import {operationLog} from 'api'
export default {
name: 'DocCt',
data() {
return {
emptyImage,
visible: false,
dataSource: [],
}
},
methods: {
async open({firstAidId}) {
this.visible = true
const res = await operationLog({firstAidId})
this.dataSource = res.data?.fileDtoList || []
}
}
}
</script>
<style lang="less" scoped>
.doc-ct {
.doc-ct-content {
height: calc(100vh - 68px);
overflow-y: auto;
padding: 10px;
}
}
</style>
<style lang="less">
.doc-ct {
.ant-modal-wrap .ant-modal .ant-modal-body {
padding: 0 !important;
}
}
</style>

54
src/views/thrombolysis/components/throm-report-observe.vue

@ -0,0 +1,54 @@
<template>
<a-modal class="doc-ct" width="85%" destroyOnClose :footer="null" v-model="visible" title="溶栓观察表">
<div class="doc-ct-content">
<div v-if="dataSource.length">
<div v-for="item in dataSource">
{{item.seriesTime}}
</div>
</div>
<div class="emtpy" v-else>
<a-empty :image="emptyImage" description="未检测到影像信息" />
</div>
</div>
</a-modal>
</template>
<script>
import emptyImage from '@/assets/images/slice/empty.png'
import {getCtInfoPath} from 'api'
export default {
name: 'DocCt',
data() {
return {
emptyImage,
visible: false,
dataSource: [],
}
},
methods: {
async open({firstAidId}) {
this.visible = true
const res = await getCtInfoPath({firstAidId})
this.dataSource = res.data || []
}
}
}
</script>
<style lang="less" scoped>
.doc-ct {
.doc-ct-content {
height: calc(100vh - 68px);
overflow-y: auto;
padding: 10px;
}
}
</style>
<style lang="less">
.doc-ct {
.ant-modal-wrap .ant-modal .ant-modal-body {
padding: 0 !important;
}
}
</style>

54
src/views/thrombolysis/components/throm-report-opera.vue

@ -0,0 +1,54 @@
<template>
<a-modal class="doc-ct" width="85%" destroyOnClose :footer="null" v-model="visible" title="介入手术记录">
<div class="doc-ct-content">
<div v-if="dataSource.length">
<div v-for="item in dataSource">
{{item.dcmPath}}
</div>
</div>
<div class="emtpy" v-else>
<a-empty :image="emptyImage" description="未检测到影像信息" />
</div>
</div>
</a-modal>
</template>
<script>
import emptyImage from '@/assets/images/slice/empty.png'
import {operationLog} from 'api'
export default {
name: 'DocCt',
data() {
return {
emptyImage,
visible: false,
dataSource: [],
}
},
methods: {
async open({firstAidId}) {
this.visible = true
const res = await operationLog({firstAidId})
this.dataSource = res.data?.fileDtoList || []
}
}
}
</script>
<style lang="less" scoped>
.doc-ct {
.doc-ct-content {
height: calc(100vh - 68px);
overflow-y: auto;
padding: 10px;
}
}
</style>
<style lang="less">
.doc-ct {
.ant-modal-wrap .ant-modal .ant-modal-body {
padding: 0 !important;
}
}
</style>

48
src/views/thrombolysis/components/throm-report-record.vue

@ -0,0 +1,48 @@
<template>
<a-modal class="doc-ct" width="85%" destroyOnClose :footer="null" v-model="visible" title="急诊溶栓记录">
<div class="doc-ct-content">
<div class="record-content" v-html="dataInfo"></div>
<a-result class="common-result" v-if="!dataInfo" title="暂无记录"></a-result>
</div>
</a-modal>
</template>
<script>
import emptyImage from '@/assets/images/slice/empty.png'
import {queryLog} from 'api'
export default {
name: 'DocCt',
data() {
return {
emptyImage,
visible: false,
dataInfo: '',
}
},
methods: {
async open({firstAidId}) {
this.visible = true
const res = await queryLog({firstAidId})
this.dataInfo = res.data || ''
}
}
}
</script>
<style lang="less" scoped>
.doc-ct {
.doc-ct-content {
height: calc(100vh - 68px);
overflow-y: auto;
padding: 10px;
}
}
</style>
<style lang="less">
.doc-ct {
.ant-modal-wrap .ant-modal .ant-modal-body {
padding: 0 !important;
}
}
</style>

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

@ -8,26 +8,26 @@
<div class="report-patient-info"> <div class="report-patient-info">
<div class="report-patient-avatar"><img src="@/assets/images/ys.png" alt="" /></div> <div class="report-patient-avatar"><img src="@/assets/images/ys.png" alt="" /></div>
<div class="report-patient-name"> <div class="report-patient-name">
<div class="report-pname">{{patientData.patientName}}</div> <div class="report-pname">{{patient.patientName}}</div>
<div class="reort-psan"> <div class="reort-psan">
<span class="reort-psex">{{patientData.patientGenderString || '-'}}</span> <span class="reort-psex">{{patient.patientGenderString || '-'}}</span>
<span class="reort-page">{{patientData.patientAge || '-'}}</span> <span class="reort-page">{{patient.patientAge || '-'}}</span>
<span class="reort-pnat">{{patientData.patientNation || '-'}}</span> <span class="reort-pnat">{{patient.patientNation || '-'}}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="report-patient-tags"> <div class="report-patient-tags">
<div class="report-patient-tag">{{patientData.firstAidZlTypeString || '-'}}</div> <div class="report-patient-tag">{{patient.firstAidZlTypeString || '-'}}</div>
<div class="report-patient-tag">发病时间</div> <div class="report-patient-tag">发病时间</div>
</div> </div>
<div class="report-patient-row"> <div class="report-patient-row">
<span class="report-patient-rowlabel">联系方式: </span> <span class="report-patient-rowlabel">联系方式: </span>
<span class="report-patient-rowtext">{{patientData.patientIdCardNo || '-'}}</span> <span class="report-patient-rowtext">{{patient.patientIdCardNo || '-'}}</span>
</div> </div>
<div class="report-patient-row"> <div class="report-patient-row">
<span class="report-patient-rowlabel">身份证: </span> <span class="report-patient-rowlabel">身份证: </span>
<span <span
class="report-patient-rowtext">{{patientData.patientIdCardNo ? utils.maskIDCard(patientData.patientIdCardNo || '') : '-'}}</span> class="report-patient-rowtext">{{patient.patientIdCardNo ? utils.maskIDCard(patient.patientIdCardNo || '') : '-'}}</span>
</div> </div>
</div> </div>
</a-card> </a-card>
@ -71,7 +71,7 @@
</div> </div>
<div class="report-treat-row2"> <div class="report-treat-row2">
<span class="report-treat-rowlabel">溶栓药物及计量: </span> <span class="report-treat-rowlabel">溶栓药物及计量: </span>
<span class="report-treat-rowtext">文案文案文案文案文案文案</span> <span class="report-treat-rowtext" style="height: 64px;">文案文案文案文案文案文案</span>
</div> </div>
<div class="report-treat-row2"> <div class="report-treat-row2">
<span class="report-treat-rowlabel">绿道状态: </span> <span class="report-treat-rowlabel">绿道状态: </span>
@ -159,10 +159,12 @@
</a-card> </a-card>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-list item-layout="horizontal" :data-source="dataList" style="margin-top: 6px;background-color: #fff"> <a-list item-layout="horizontal" :data-source="dataList"
style="margin-top: 6px;background-color: #fff">
<a-list-item slot="renderItem" slot-scope="item, index"> <a-list-item slot="renderItem" slot-scope="item, index">
<a-button slot="actions" shape="round">导出</a-button> <a-button slot="actions" shape="round">导出</a-button>
<a-button slot="actions" shape="round" type="primary">查看</a-button> <a-button slot="actions" shape="round" type="primary"
@click="checkReport(item.type)">查看</a-button>
<a-list-item-meta> <a-list-item-meta>
<div slot="title" style="font-weight: bold; font-size: 1rem;">{{item.name}}</div> <div slot="title" style="font-weight: bold; font-size: 1rem;">{{item.name}}</div>
</a-list-item-meta> </a-list-item-meta>
@ -176,6 +178,10 @@
<a-button :disabled="writeAble" class="common-button" block type="primary" size="large" <a-button :disabled="writeAble" class="common-button" 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-record ref="record"></throm-report-record>
<throm-report-observe ref="observe"></throm-report-observe>
<throm-report-opera ref="opera"></throm-report-opera>
</div> </div>
</template> </template>
@ -186,28 +192,43 @@
} from 'vuex'; } from 'vuex';
import { import {
getNextNode, getNextNode,
messageQuery messageQuery,
queryAidRecord
} from 'api'; } from 'api';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration'; import duration from 'dayjs/plugin/duration';
import ThromReportDnt from './throm-report-dnt.vue';
import ThromReportRecord from './throm-report-record.vue';
import ThromReportObserve from './throm-report-observe.vue';
import ThromReportOpera from './throm-report-opera.vue';
dayjs.extend(duration); dayjs.extend(duration);
export default { export default {
name: "throm-report", name: "throm-report",
components: {
ThromReportDnt,
ThromReportRecord,
ThromReportObserve,
ThromReportOpera,
},
data() { data() {
return { return {
currentIndex: 1, currentIndex: 1,
dataList: [{ dataList: [{
name: '急诊溶栓记录' name: '急诊溶栓记录',
type: 'record'
}, },
{ {
name: '溶栓观察表' name: '溶栓观察表',
type: 'observe'
}, },
{ {
name: 'DNT时间表' name: 'DNT时间表',
type: 'dnt'
}, },
{ {
name: '介入手术记录' name: '介入手术记录',
type: 'opera'
}, },
], ],
nodeInfo: { nodeInfo: {
@ -236,22 +257,31 @@
'RYPG-NIHSS': '', 'RYPG-NIHSS': '',
}, },
request: 1, request: 1,
processNodeIndex: 0 processNodeIndex: 0,
patient: {}
}
},
props: {
reportType: {
type: String,
default: "",
},
dataSource: {
type: Object,
default: () => ({})
} }
}, },
computed: { computed: {
...mapState('patient', ['patientData', 'nextNodeData', 'writeAble']), ...mapState('patient', ['patientData', 'nextNodeData', 'writeAble']),
getPatient() { getPatient() {
if (!this.patientData) return;
const { const {
patientName, patientName,
patientGender, patientGender,
patientAge patientAge
} = this.patientData; } = this.patient;
if (!patientName) return; if (!patientName) return;
return `${patientName} ${ return `${patientName} ${ patientGender === 0 ? '男' : patientGender === 1 ? '女' : '' } ${patientAge || ''}`;
patientGender === 0 ? '男' : patientGender === 1 ? '女' : ''
} ${patientAge || ''}`;
}, },
getPressure() { getPressure() {
const { const {
@ -282,7 +312,17 @@
}, },
async mounted() { async mounted() {
//TODU //TODU
this.init(); if (this.reportType == 'modal') {
console.log(this.dataSource)
this.patient = this.dataSource
} else {
if (!this.patientData) return;
this.patient = this.patientData
}
const {
firstAidId
} = this.patient;
firstAidId && this.init(firstAidId);
// await this.getMessageQuery(); // await this.getMessageQuery();
}, },
methods: { methods: {
@ -329,6 +369,25 @@
name: 'Record', name: 'Record',
}); });
}, },
checkReport(modalRef) {
console.log('modalRef', this.patient)
// const {
// sourceId,
// patientName,
// patientAge,
// patientGender,
// firstAidId,
// } = this.patient;
// this.setPatientData({
// sourceId,
// patientName,
// patientAge,
// patientGender,
// firstAidId,
// });
this.$refs[modalRef].open(this.patient)
},
// //
echo(data) { echo(data) {
for (let k in data) { for (let k in data) {
@ -347,20 +406,23 @@
} }
}, },
// //
init() { async init(firstAidId) {
if (this.patientData) {
const { const res = await queryAidRecord(firstAidId)
recordValDict console.log(res)
} = this.patientData; // if (this.patientData) {
let data = Object.assign({}, this.patientData); // const {
this.utils.merge(this.dataInfo, data); // recordValDict
if (recordValDict) { // } = this.patientData;
this.echo(recordValDict); // let data = Object.assign({}, this.patientData);
} // this.utils.merge(this.dataInfo, data);
} // if (recordValDict) {
const { // this.echo(recordValDict);
firstAidId // }
} = this.patientData; // }
// const {
// firstAidId
// } = this.patientData;
this.getNextNode(firstAidId); this.getNextNode(firstAidId);
}, },
async getNextNode(firstAidId) { async getNextNode(firstAidId) {
@ -518,6 +580,9 @@
} }
.report-timeline { .report-timeline {
height: 424px;
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%;

Loading…
Cancel
Save