You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
5.8 KiB
230 lines
5.8 KiB
<template>
|
|
<!-- 智能填充 -->
|
|
<el-drawer
|
|
title="我是标题"
|
|
:visible.sync="drawer"
|
|
:with-header="false"
|
|
:before-close="handleClose"
|
|
class="intelligent-drawer-dialog"
|
|
>
|
|
<div class="crf-data">
|
|
<template v-if="examData.length>0">
|
|
<div v-for="(item,index) in examData" :key="index">
|
|
<crf-data
|
|
v-if="crfDataVisible && item.exams.length>0"
|
|
v-model="item.value"
|
|
:exam-name="item.name"
|
|
:list="item.exams"
|
|
/>
|
|
</div>
|
|
</template>
|
|
<div v-else class="nodata">
|
|
<img src="@/assets/img/nodata.png" alt="">
|
|
</div>
|
|
</div>
|
|
</el-drawer>
|
|
</template>
|
|
<script>
|
|
const Base64 = require('js-base64').Base64
|
|
import crfData from '@/components/hm-crf/crf-data.vue'
|
|
export default {
|
|
components: { crfData },
|
|
props: {
|
|
drawer: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
title: {
|
|
type: String,
|
|
default: ''
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
// 获取的检查数据,【item.value】为v-model绑定值,即用于填充左侧iframe
|
|
examData: [{
|
|
exams: [{
|
|
time: '2021-07-16',
|
|
recId: '1',
|
|
type: null,
|
|
data: [{
|
|
both: null,
|
|
id: '1',
|
|
name: '等效球镜',
|
|
od: '-0.25',
|
|
os: '1.5'
|
|
}]
|
|
}, {
|
|
time: '2021-07-17',
|
|
recId: '2',
|
|
type: null,
|
|
data: [{
|
|
both: null,
|
|
id: '2',
|
|
name: '等效球镜',
|
|
od: '-0.25',
|
|
os: '1.5'
|
|
}]
|
|
}, {
|
|
time: '2021-07-18',
|
|
recId: '3',
|
|
type: null,
|
|
data: [{
|
|
both: null,
|
|
id: '3',
|
|
name: '等效球镜',
|
|
od: '-0.25',
|
|
os: '1.5'
|
|
}]
|
|
}],
|
|
id: '验光',
|
|
name: '验光'
|
|
}, {
|
|
exams: [{
|
|
time: '2021-07-16',
|
|
recId: '4',
|
|
type: null,
|
|
data: [{
|
|
both: null,
|
|
id: '4',
|
|
name: '等效球镜',
|
|
od: '-0.25',
|
|
os: '1.5'
|
|
}]
|
|
}, {
|
|
time: '2021-07-17',
|
|
recId: '5',
|
|
type: null,
|
|
data: [{
|
|
both: null,
|
|
id: '5',
|
|
name: '等效球镜',
|
|
od: '-0.25',
|
|
os: '1.5'
|
|
}]
|
|
}, {
|
|
time: '2021-07-18',
|
|
recId: '6',
|
|
type: null,
|
|
data: [{
|
|
both: null,
|
|
id: '6',
|
|
name: '等效球镜',
|
|
od: '-0.25',
|
|
os: '1.5'
|
|
}]
|
|
}],
|
|
id: '验光',
|
|
name: '验光'
|
|
}],
|
|
crfDataVisible: true
|
|
}
|
|
},
|
|
created() {
|
|
console.log(4444)
|
|
// this.init()
|
|
},
|
|
methods: {
|
|
handleClose(done) {
|
|
this.$emit('drawerClose', false)
|
|
},
|
|
init() {
|
|
this.$nextTick(() => {
|
|
this.$http.get('/crf/template', { params: { crfId: this.crfId }}).then(({ data: res }) => {
|
|
if (res.code !== 0) {
|
|
return this.$message.error(res.msg)
|
|
}
|
|
if (res.data) {
|
|
this.content = Base64.decode(res.data.content)
|
|
this.crfVisible = true
|
|
}
|
|
}).catch(() => { })
|
|
|
|
// this.$http.get(`/from/data/getFirstFeedbackData/${this.patientIdNumber}`).then(({ data: res }) => {
|
|
// if (res.code !== 0) {
|
|
// return this.$message.error(res.msg)
|
|
// }
|
|
// if (res.data) {
|
|
// this.examData = res.data
|
|
// this.crfDataVisible = true
|
|
// // setTimeout(() => {
|
|
// // this.fillCrf()
|
|
// // }, 1000)
|
|
// }
|
|
// }).catch(() => { })
|
|
})
|
|
},
|
|
fillCrf() {
|
|
// 过滤数据
|
|
const dataSelect = []
|
|
let fillItemList = []
|
|
this.examData.forEach(item => {
|
|
if (item.value) {
|
|
dataSelect.push(item.value)
|
|
if (item.value.data) {
|
|
const examItemList = item.value.data.map((obj, index, arr) => {
|
|
obj.recId = item.value.recId
|
|
obj.time = item.value.time
|
|
return obj
|
|
})
|
|
fillItemList = fillItemList.concat(examItemList)
|
|
}
|
|
}
|
|
})
|
|
const ifr = this.$refs.hmCrf.$el
|
|
const ifrWin = ifr.contentWindow
|
|
ifrWin.dataFill(fillItemList)
|
|
},
|
|
submit() {
|
|
const ifr = this.$refs.hmCrf.$el
|
|
const ifrDoc = ifr.contentWindow.document || ifr.contentDocument
|
|
const body = ifrDoc.getElementsByTagName('body')[0]
|
|
const crfContent = body.innerHTML
|
|
this.$http.post('/crf/form', {
|
|
crfId: this.crfId,
|
|
dataContent: Base64.encode(crfContent),
|
|
idNumber: this.patientIdNumber,
|
|
inputDate: this.inputDate,
|
|
projectId: window.SITE_CONFIG['projectId']
|
|
}).then(({ data: res }) => {
|
|
if (res.code !== 0) {
|
|
return this.$message.error(res.msg)
|
|
}
|
|
// this.updateVisitPlan()
|
|
this.$message({
|
|
message: this.$t('prompt.success'),
|
|
type: 'success',
|
|
duration: 500,
|
|
onClose: () => {
|
|
this.visible = false
|
|
this.$emit('refreshData')
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.intelligent-drawer-dialog {
|
|
height: 100%;
|
|
.nodata {
|
|
width: 300px;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
img{
|
|
width:300px;
|
|
}
|
|
}
|
|
.crf-data {
|
|
display: inline-block;
|
|
vertical-align: top;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: auto;
|
|
padding: 0 20px 0 20px;
|
|
}
|
|
}
|
|
|
|
</style>
|