5 changed files with 446 additions and 183 deletions
@ -0,0 +1,205 @@ |
|||
<template> |
|||
<div class="throm-result-sop"> |
|||
<!-- <a-card class="report-card" title="溶栓状态"> --> |
|||
<div class="report-timeline"> |
|||
<!-- <a-steps progress-dot :current="currentIndex" direction="vertical"> |
|||
<template v-for="(item, index) in getNodeList"> |
|||
<a-step v-if="item.nodeType === 0" |
|||
:status="processNodeIndex == index ? 'process' : processNodeIndex > index && item.record ? 'finish' : 'wait' "> |
|||
<div slot="title" style="display: flex;justify-content: space-between;width: 100%"> |
|||
<div>{{item.nodeName}}</div> |
|||
<div> |
|||
{{processNodeIndex == index ? '进行中' : processNodeIndex > index && item.record ? '已完成' : ''}} |
|||
</div> |
|||
</div> |
|||
<div slot="description">{{item.record ? item.record.answer[0] : ''}}</div> |
|||
</a-step> |
|||
</template> |
|||
</a-steps> --> |
|||
<a-timeline> |
|||
<a-timeline-item node-top="4" v-for="(item, index) in getNodeList" :key="item.nodeName" |
|||
:color="item.record ? '#00c767' : '#ff4a44'" v-if="item.nodeType === 0"> |
|||
<div class="flex justify-between" :class=" |
|||
item.record ? 'cor-green' : 'cor-red' |
|||
"> |
|||
<div class="fz24 font-bold"> |
|||
{{ item.nodeName }} |
|||
</div> |
|||
<div class="fz24 font-bold"> |
|||
{{ item.record ? '已完成' : '' }} |
|||
</div> |
|||
</div> |
|||
<div class="fz20 text-left" :class=" |
|||
item.record ? 'cor-green' : 'cor-red' |
|||
"> |
|||
{{ |
|||
item.record ? item.record.answer[0] : '' |
|||
}} |
|||
</div> |
|||
</a-timeline-item> |
|||
</a-timeline> |
|||
</div> |
|||
<!-- </a-card> --> |
|||
<div class="throm-common-button"> |
|||
<a-button class="" block type="primary" size="large" @click="onSubmit">下一步</a-button> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
mapMutations, |
|||
mapState |
|||
} from 'vuex'; |
|||
import { |
|||
getNextNode |
|||
} from 'api'; |
|||
export default { |
|||
name: '', |
|||
data() { |
|||
return { |
|||
currentIndex: 0, |
|||
processNodeIndex: 0, |
|||
nodeInfo: { |
|||
fbsj: '', |
|||
jfbSeconds: '', |
|||
dntSeconds: '', |
|||
ctSeconds: '', |
|||
nextStepName: '', |
|||
countDownInSeconds: '', |
|||
nodeList: [], |
|||
}, |
|||
} |
|||
}, |
|||
props: { |
|||
reportType: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
dataSource: { |
|||
type: Object, |
|||
default: () => ({}) |
|||
}, |
|||
firstAidId: { |
|||
type: String, |
|||
default: "", |
|||
} |
|||
}, |
|||
async mounted() { |
|||
console.log(this.reportType, this.firstAidId) |
|||
if (this.reportType == 'modal') { |
|||
this.init(this.dataSource.firstAidId); |
|||
} else if (this.firstAidId) { |
|||
this.init(this.firstAidId); |
|||
} |
|||
|
|||
}, |
|||
computed: { |
|||
getNodeList() { |
|||
const { |
|||
sop |
|||
} = this.nodeInfo; |
|||
if (!sop) return []; |
|||
const lastFinishIndex = sop.nodeList.findIndex(a => !!a.record) || 0 |
|||
this.processNodeIndex = lastFinishIndex + 1 |
|||
return sop.nodeList; |
|||
}, |
|||
}, |
|||
methods: { |
|||
...mapMutations('patient', ['setNextNodeData']), |
|||
//初始化数据 |
|||
async init(firstAidId) { |
|||
this.getNextNode(firstAidId); |
|||
}, |
|||
async getNextNode(firstAidId) { |
|||
let res = await getNextNode({ |
|||
firstAidId, |
|||
}); |
|||
const { |
|||
data, |
|||
code, |
|||
msg |
|||
} = res; |
|||
if (code === 200) { |
|||
console.log('this.nodeInfo', data) |
|||
this.nodeInfo = data; |
|||
this.setNextNodeData(data); |
|||
} else { |
|||
this.$message.error('缺少急救id信息'); |
|||
} |
|||
}, |
|||
onSubmit() { |
|||
this.$emit('next') |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="less"> |
|||
.throm-result-sop { |
|||
.report-timeline { |
|||
overflow-y: auto; |
|||
padding: 12px; |
|||
min-height: 300px; |
|||
|
|||
.flex { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
|
|||
.cor-green { |
|||
color: #00c767; |
|||
} |
|||
|
|||
.cor-red { |
|||
color: #ff4a44; |
|||
} |
|||
|
|||
.font-xl { |
|||
font-size: 22px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.ant-steps { |
|||
height: 100%; |
|||
padding-bottom: 20px; |
|||
box-sizing: border-box; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
.ant-steps-item .ant-steps-item-container { |
|||
display: flex; |
|||
|
|||
.ant-steps-item-content { |
|||
flex: 1; |
|||
text-align: right; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.ant-steps-item-title { |
|||
padding: 0; |
|||
width: 100%; |
|||
} |
|||
|
|||
.ant-steps-item-finish { |
|||
.ant-steps-item-title { |
|||
color: #000000; |
|||
} |
|||
} |
|||
|
|||
.ant-steps-item-process { |
|||
.ant-steps-item-title { |
|||
color: #007AFF; |
|||
// // border-bottom: 1px solid #007AFF; |
|||
// border-bottom: 3px solid transparent; |
|||
// /* 设置透明的底部边框 */ |
|||
// border-image: linear-gradient(to right, #fff, #007AFF) 1; |
|||
// /* 使用渐变色填充边框 */ |
|||
// border-radius: 10px; |
|||
// /* 设置圆角 */ |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue